https://foro.gambas-es.org/viewtopic.php?f=3&t=5731 ----------------------------------- v3ctor Sabado, 27 Agosto 2016, 23:54 Mostrar Minúsculas Y Mayúsculas Igualmente (sqlite3) ----------------------------------- buenas [code linenumbers=false syntax=sql]select * from palabras where palabra='marcelo' COLLATE NOCASE[/code] con la sentencia anterior nos mostrará tanto: marcelo como, Marcelo como, maRcelo etc ahora como sería si queremos hacer lo mismo pero con un filtro mediante where y like? o se hace con algún pragma? escucho sugerencias :lol: ----------------------------------- v3ctor Domingo, 28 Agosto 2016, 00:21 Re: Mostrar Minúsculas Y Mayúsculas Igualmente (sqlite3) ----------------------------------- [code linenumbers=false syntax=sql]select * from palabras where palabra like '%Marcelo%' PRAGMA case_sensitive_like=0 PRAGMA case_sensitive_like=1[/code] esto funciona en las consulta de gambas pero no funciona en el programa, tal vez algo no hago bien :roll: [code linenumbers=false syntax=gambas]Public Sub PragmaSensitive(accion As Boolean) If accion Then Conexion.Exec("PRAGMA case_sensitive_like=1") Else Conexion.Exec("PRAGMA case_sensitive_like=0") Endif End PragmaSensitive(chkbNoCase.Value) ResultadoX2 = Conexion.Exec("Select * from '" & NomTablaX & "' where texto like '%" & EsteFiltro & "%'")[/code] ----------------------------------- v3ctor Domingo, 28 Agosto 2016, 01:01 Re: Mostrar Minúsculas Y Mayúsculas Igualmente (sqlite3) ----------------------------------- este es el contexto donde se encuentra la sentencia sql [code linenumbers=false syntax=gambas]Public Sub PragmaCaseSensitiveLike(accion As Boolean) ' PRAGMA case_sensitive_like = [true|false]; 'PRAGMA case_sensitive_like = 1; 'Select * From 'Mateo' where texto like '%Padre%'; If accion Then Conexion.Exec("PRAGMA case_sensitive_like=true") Else Conexion.Exec("PRAGMA case_sensitive_like=false") Endif End Public Sub BuscarTexto(EsteFiltro As String, EstosLibros As Integer[]) Dim ResultadoX, ResultadoX2 As Result Dim ContadorVersiculos, NumTabla, Buscando, InicioTitulo, FinTitulo, coincidencias, CoincidenciasLibro, iVeces, i As Integer Dim iVersPorLibro, iTotalAT, iTotalNT As Integer Dim NomTablaX, Titulo, TituloOK, ContadorCoincidencias As String Dim Proceso1, Proceso2, Proceso3, Proceso4, Proceso5 As String Dim AquiReferencias, ResultadosEncontrados As String Dim PrimeraLinea As Boolean = True Dim Encabezado As Boolean = True ContenidoBusquedaGuardar = "" FiltroLibros = EstosLibros Inc Application.Busy PragmaCaseSensitiveLike(chkbNoCase.Value) 'nueva linea For Each NumTabla In FiltroLibros ResultadoX = Conexion.Exec("select * from 'biblia'") Do While ResultadoX.Available If ResultadoX!indicelibro = NumTabla Then NomTablaX = ResultadoX!nombretabla 'Select * From 'Mateo' where texto like '%Padre%'; ResultadoX2 = Conexion.Exec("Select * from '" & NomTablaX & "' where texto like '%" & EsteFiltro & "%'") ' original ' ResultadoX2 = Conexion.Exec("Select * from '" & NomTablaX & "' where texto like '%" & EsteFiltro & "%'") 'original Encabezado = True iVersPorLibro = 0 'contador por libro If ResultadoX2.Available = True Then Do While ResultadoX2.Available Buscando = InStr(ResultadoX2!texto, EsteFiltro) InicioTitulo = InStr(ResultadoX2!texto, "- ") FinTitulo = InStr(ResultadoX2!texto, " -") If chkVerRef.Value Then AquiReferencias = ResultadoX2!referencias If InicioTitulo > 0 Then Titulo = Left$(ResultadoX2!texto, FinTitulo + 2) TituloOK = "" & Titulo & "" Endif If Buscando = 0 Then 'si no hay ninguna coicidencia pasa al siguiente dato ResultadoX2.MoveNext Continue Endif iVeces = 0 Do i = String.InStr(ResultadoX2!texto, EsteFiltro, i + 1) If i > 0 Then Inc coincidencias Inc CoincidenciasLibro Inc iVeces Select Case NumTabla 'contador por libro Case 1 To 39 Inc iTotalAT Case Else Inc iTotalNT End Select 'contador por libro Endif Loop Until i = 0 Proceso1 = Mid(ResultadoX2!texto, Buscando, Len(EsteFiltro)) Proceso2 = Replace$(Replace$(ResultadoX2!texto, Titulo, TituloOK), Proceso1, "" & EsteFiltro & "") Proceso3 = Replace$(Proceso2, "[", "") Proceso4 = Replace$(Proceso3, "]", "") Proceso5 = Replace$(Proceso4, "*", "*") If iVeces = 1 Then If PrimeraLinea = True Then 'es true si es la primera linea es para evitar la primera linea vacia. If chkVerRef.Value Then ResultadosEncontrados = "(" & NomTablaX & " " & ResultadoX2!capitulo & ":" & ResultadoX2!versiculo & ") " & Proceso5 & " " & AquiReferencias & "" & "
" PrimeraLinea = False Else ResultadosEncontrados = "(" & NomTablaX & " " & ResultadoX2!capitulo & ":" & ResultadoX2!versiculo & ") " & Proceso5 & "
" PrimeraLinea = False Endif Else If chkVerRef.Value Then ResultadosEncontrados &= "(" & NomTablaX & " " & ResultadoX2!capitulo & ":" & ResultadoX2!versiculo & ") " & Proceso5 & " " & AquiReferencias & "" & "
" Else ResultadosEncontrados &= "(" & NomTablaX & " " & ResultadoX2!capitulo & ":" & ResultadoX2!versiculo & ") " & Proceso5 & "
" Endif Endif Else 'entra en esta zona cuando hay mas de una coincidencia en un mismo versiculo. If PrimeraLinea = True Then ResultadosEncontrados = "(" & NomTablaX & " " & ResultadoX2!capitulo & ":" & ResultadoX2!versiculo & ") " & iVeces & " " & Proceso5 & "
" PrimeraLinea = False Else ResultadosEncontrados &= "(" & NomTablaX & " " & ResultadoX2!capitulo & ":" & ResultadoX2!versiculo & ") " & iVeces & " " & Proceso5 & " " & AquiReferencias & "" & "
" Endif Endif Inc iVersPorLibro 'contador por libro Inc ContadorVersiculos ResultadoX2.MoveNext Loop If Not bSinLibros Then If CoincidenciasLibro > 0 Then lstBPorLibro.Add(NomTablaX & "(" & CoincidenciasLibro & ")") 'contador por libro DE PRUEBA Endif Endif Endif ResultadoX.MoveNext CoincidenciasLibro = 0 Loop Next If Not bSinLibros Then lstBPorLibro.Add("Todos (" & coincidencias & ")", 0) 'contador por libro DE PRUEBAS If Not bSinLibros Then lstBPorLibro.Add("Antiguo (" & iTotalAT & ")", 1) 'contador por libro If Not bSinLibros Then lstBPorLibro.Add("Nuevo (" & iTotalNT & ")", 2) 'contador por libro txtEBuscar1.RichText = ResultadosEncontrados Wait 0.1 ContadorCoincidencias = MostrarCoincidencias(ContadorVersiculos, coincidencias) ContenidoBusquedaGuardar &= ContadorCoincidencias & " (VisorRV1960 versión " & Application.Version & ")

" & txtEBuscar1.RichText Dec Application.Busy End[/code] ----------------------------------- shordi Domingo, 28 Agosto 2016, 06:40 Re: Mostrar Minúsculas Y Mayúsculas Igualmente (sqlite3) ----------------------------------- Creo que te lías innecesariamente. Si quieres búsqueda exacta, simplemente: [code linenumbers=false syntax=sql] SELECT * FROM palabras WHERE palabra='marcelo' [/code] Si quieres busqueda no sensible a mayúsculas y minúsculas: [code linenumbers=false syntax=sql] SELECT * FROM palabras WHERE palabra like 'marcelo' [/code] Si quieres, además, buscar fragmentos de palabras (que contengan) [code linenumbers=false syntax=sql] SELECT * FROM palabras WHERE palabra like '%marcelo%' [/code] O que empiecen por la cadena [code linenumbers=false syntax=sql] SELECT * FROM palabras WHERE palabra like 'marcelo%' [/code] O que terminen por la cadena [code linenumbers=false syntax=sql] SELECT * FROM palabras WHERE palabra like '%marcelo' [/code] El toqueteo de los pragmas te puede llevar a resultados espúreos por cuanto las igualdades de las cadenas pueden no ser correctas, etc. etc.