en el programa VisorRV1960 estoy luchando para encontrar un buen método de búsqueda.
parece que lo mejor es el texto plano
así podemos buscar y encontrar pongamos las palabras con faltas o no.
también evitando los saltos de linea odiosos para las búsquedas en sqlite3.
hasta ahora el texto semiPlano lo tenia en un txt y ahi buscaba pero no podia hacer otras cosas muy importantes que si ese texto estuviera en la misma base de datos.
entonces estoy probando (y me tiemblan las manos, aunque lo hago con proyecto de copia y base de copia también) de la siguiente manera, cree manualmente en las 66 tablas un campo llamado 'textoPlano'.
el dilema es como copiar, procesar y guardar el nuevo texto en las columnas correspondientes textoPlano.
al principio intente hacer todo sobre la misma base de datos no me dio resultado no se si sera posible.
después use otra método, de una base leía los datos y en otra copia injertaba el texto plano en los campos vacíos de la columna 'textoplano' y funciono demoro 40 minutos en copiar toda la base de datos, mejor que pasar dos años mas pasando a mano es jajajaj.
aquí les dejo el código por si a alguien le pueda servir o dar ideas.
Public Sub Button3_Click()
Dim tabla As String
Dim tablaX As Table
Dim campoX As Field
Dim r1 As Result
Dim sql1, sql2 As String
Dim textoPlano As String
Dim idTabla As String
Dim cn_Desktop As Connection
Application.Busy = 1
cn_Desktop = New Connection
cn_Desktop.Type = "sqlite3"
cn_Desktop.Name = "BibliaRV1960"
cn_Desktop.Host = "/home/juan/Escritorio"
Try cn_Desktop.Open()
If Error Then
Message.Error(Error.Text)
Return
Endif
For Each tabla In subBiblia.TodasLasTablas()
For Each tablaX In vp.Cn.Tables
If tablaX.Name = tabla Then
For Each campoX In tablaX.Fields
If Left(campoX.Name, 2) = "id" Then
idTabla = campoX.Name
Break
Endif
Next
Endif
Next
sql1 = Subst$("Select * from '&1'", tabla)
r1 = vp.Cn.Exec(sql1)
Do While r1.Available
textoPlano = subFto.ConvertirTextoToTextoPlano(r1!texto, True)
sql2 = Subst("Update '&1' set textoPlano='&2' where &3=&4", tabla, textoPlano, idTabla, r1[idTabla])
labTabla.Text = "tabla=" & tabla & " : idtabla=" & idTabla & " : r1[idTabla]=" & r1[idTabla]
Wait 0.0001
Try cn_Desktop.Exec(sql2)
If Error Then
Message.Error(Error.Text)
Break
Endif
r1.MoveNext
Loop
Next
Application.Busy = 0
End
Dim tabla As String
Dim tablaX As Table
Dim campoX As Field
Dim r1 As Result
Dim sql1, sql2 As String
Dim textoPlano As String
Dim idTabla As String
Dim cn_Desktop As Connection
Application.Busy = 1
cn_Desktop = New Connection
cn_Desktop.Type = "sqlite3"
cn_Desktop.Name = "BibliaRV1960"
cn_Desktop.Host = "/home/juan/Escritorio"
Try cn_Desktop.Open()
If Error Then
Message.Error(Error.Text)
Return
Endif
For Each tabla In subBiblia.TodasLasTablas()
For Each tablaX In vp.Cn.Tables
If tablaX.Name = tabla Then
For Each campoX In tablaX.Fields
If Left(campoX.Name, 2) = "id" Then
idTabla = campoX.Name
Break
Endif
Next
Endif
Next
sql1 = Subst$("Select * from '&1'", tabla)
r1 = vp.Cn.Exec(sql1)
Do While r1.Available
textoPlano = subFto.ConvertirTextoToTextoPlano(r1!texto, True)
sql2 = Subst("Update '&1' set textoPlano='&2' where &3=&4", tabla, textoPlano, idTabla, r1[idTabla])
labTabla.Text = "tabla=" & tabla & " : idtabla=" & idTabla & " : r1[idTabla]=" & r1[idTabla]
Wait 0.0001
Try cn_Desktop.Exec(sql2)
If Error Then
Message.Error(Error.Text)
Break
Endif
r1.MoveNext
Loop
Next
Application.Busy = 0
End