Con esto de que estoy trabajando con programas que manejan base de datos y por lógica tablas me veo obligado a programar módulos o clases pues son operaciones repetitivas como la de generar un archivo con formato csv de una tabla X.
Aqui les dejo la parte de exportar... jaja a ver si me sale la de importar.
Espero que les sirva para experimentar y probar..... hagan sus comentarios si lo desean. Saludos.
' gambas module file
' by postapase
Public Sub Exportar(coneccion As Connection, tabla As Table)
Dim Resultado As Result
Dim Ruta, Lista As String
Dim Campo As Field
Dialog.Path = User.Home
If Dialog.SelectDirectory() Then Return
Ruta = Dialog.Path &/ tabla.Name & ".csv"
Print Ruta
Resultado = coneccion.Exec("Select * From " & tabla.Name)
Do While Resultado.Available
For Each Campo In tabla.Fields
Lista &= "\"" & Resultado[Campo.Name] & "\","
Next
Resultado.MoveNext
Lista = Left$(Lista, Len(Lista) - 1) ' elimina la última coma que sobra
Lista &= gb.NewLine
Loop
File.Save(Ruta, Lista)
End
Public Sub Importar()
' pendiente....
End
' by postapase
Public Sub Exportar(coneccion As Connection, tabla As Table)
Dim Resultado As Result
Dim Ruta, Lista As String
Dim Campo As Field
Dialog.Path = User.Home
If Dialog.SelectDirectory() Then Return
Ruta = Dialog.Path &/ tabla.Name & ".csv"
Print Ruta
Resultado = coneccion.Exec("Select * From " & tabla.Name)
Do While Resultado.Available
For Each Campo In tabla.Fields
Lista &= "\"" & Resultado[Campo.Name] & "\","
Next
Resultado.MoveNext
Lista = Left$(Lista, Len(Lista) - 1) ' elimina la última coma que sobra
Lista &= gb.NewLine
Loop
File.Save(Ruta, Lista)
End
Public Sub Importar()
' pendiente....
End
Llamada al módulo:
Public Sub btnCSVExport_Click()
Dim tabla As Table
tabla = FMain.Conectar1.Tables["deudas"]
CSV.Exportar(FMain.Conectar1, tabla)
End
Dim tabla As Table
tabla = FMain.Conectar1.Tables["deudas"]
CSV.Exportar(FMain.Conectar1, tabla)
End
Código Completo importar/exportar
' gambas module file
' by postapase (modulo CSV para tabla deudas)
Public Sub Exportar(coneccion As Connection, tabla As Table, dir As String) As Boolean
Dim Resultado As Result
Dim Ruta, Lista As String
Dim Campo As Field
Ruta = dir &/ tabla.Name & ".csv"
Resultado = coneccion.Exec("Select * From " & tabla.Name)
Do While Resultado.Available
For Each Campo In tabla.Fields
Lista &= "\"" & Resultado[Campo.Name] & "\","
Next
Resultado.MoveNext
Lista = Left$(Lista, Len(Lista) - 1) ' elimina la última coma que sobra
Lista &= gb.NewLine
Loop
If Exist(Ruta) Then
Kill Ruta
Wait 0.1
File.Save(Ruta, Lista)
Else
File.Save(Ruta, Lista)
Endif
If Exist(ruta) Then
Return True
Else
Return False
Endif
End
Public Sub Importar(coneccion As Connection, tabla As Table, ruta As String)
Dim Campo As Field
Dim ListaCampos, EsteCampo, ValoresFila, SQL As String
Dim CSV As File
Dim Separados As String[]
Dim FechaIngreso As Date
Dim FechaTermino As Date
Dim EsteMonto, EstaEntrega, EsteSaldo As Integer
Dim Estado As Boolean
Dim EsteMotivo As String
Dim EstaEvolucion As String
For Each Campo In tabla.Fields
ListaCampos &= "\"" & Campo.Name & "\","
Next
ListaCampos = Left$(ListaCampos, Len(ListaCampos) - 1)
coneccion.Delete(tabla.Name)
coneccion.Exec("update sqlite_sequence set seq = 0 Where name =&1", tabla.Name)
CSV = Open ruta For Read
While Not Eof(CSV)
Line Input #CSV, ValoresFila
Separados = Split(ValoresFila)
FechaIngreso = CDate(Replace$(Separados[1], "\"", ""))
EsteMonto = CInteger(Replace$(Separados[2], "\"", ""))
EstaEntrega = CInteger(Replace$(Separados[3], "\"", ""))
EsteSaldo = CInteger(Replace$(Separados[4], "\"", ""))
EsteMotivo = Replace$(Separados[5], "\"", "")
EstaEvolucion = Replace$(Separados[6], "\"", "")
FechaTermino = CDate(Replace$(Separados[7], "\"", ""))
Estado = CBoolean(Replace$(Separados[8], "\"", ""))
SQL = "insert into \"" & tabla.Name & "\" (" & ListaCampos & ") values (&1,&2,&3,&4,&5,&6,&7,&8,&9)"
Print SQL
Try coneccion.Exec(SQL, Null, FechaIngreso, EsteMonto, EstaEntrega, EsteSaldo, EsteMotivo, EstaEvolucion, FechaTermino, Estado)
If Error Then
Print Error.Text
Print Error.Where
Print Error.Code
Endif
Wend
Close #CSV
Deudas.MostrarDeudas()
End
' by postapase (modulo CSV para tabla deudas)
Public Sub Exportar(coneccion As Connection, tabla As Table, dir As String) As Boolean
Dim Resultado As Result
Dim Ruta, Lista As String
Dim Campo As Field
Ruta = dir &/ tabla.Name & ".csv"
Resultado = coneccion.Exec("Select * From " & tabla.Name)
Do While Resultado.Available
For Each Campo In tabla.Fields
Lista &= "\"" & Resultado[Campo.Name] & "\","
Next
Resultado.MoveNext
Lista = Left$(Lista, Len(Lista) - 1) ' elimina la última coma que sobra
Lista &= gb.NewLine
Loop
If Exist(Ruta) Then
Kill Ruta
Wait 0.1
File.Save(Ruta, Lista)
Else
File.Save(Ruta, Lista)
Endif
If Exist(ruta) Then
Return True
Else
Return False
Endif
End
Public Sub Importar(coneccion As Connection, tabla As Table, ruta As String)
Dim Campo As Field
Dim ListaCampos, EsteCampo, ValoresFila, SQL As String
Dim CSV As File
Dim Separados As String[]
Dim FechaIngreso As Date
Dim FechaTermino As Date
Dim EsteMonto, EstaEntrega, EsteSaldo As Integer
Dim Estado As Boolean
Dim EsteMotivo As String
Dim EstaEvolucion As String
For Each Campo In tabla.Fields
ListaCampos &= "\"" & Campo.Name & "\","
Next
ListaCampos = Left$(ListaCampos, Len(ListaCampos) - 1)
coneccion.Delete(tabla.Name)
coneccion.Exec("update sqlite_sequence set seq = 0 Where name =&1", tabla.Name)
CSV = Open ruta For Read
While Not Eof(CSV)
Line Input #CSV, ValoresFila
Separados = Split(ValoresFila)
FechaIngreso = CDate(Replace$(Separados[1], "\"", ""))
EsteMonto = CInteger(Replace$(Separados[2], "\"", ""))
EstaEntrega = CInteger(Replace$(Separados[3], "\"", ""))
EsteSaldo = CInteger(Replace$(Separados[4], "\"", ""))
EsteMotivo = Replace$(Separados[5], "\"", "")
EstaEvolucion = Replace$(Separados[6], "\"", "")
FechaTermino = CDate(Replace$(Separados[7], "\"", ""))
Estado = CBoolean(Replace$(Separados[8], "\"", ""))
SQL = "insert into \"" & tabla.Name & "\" (" & ListaCampos & ") values (&1,&2,&3,&4,&5,&6,&7,&8,&9)"
Print SQL
Try coneccion.Exec(SQL, Null, FechaIngreso, EsteMonto, EstaEntrega, EsteSaldo, EsteMotivo, EstaEvolucion, FechaTermino, Estado)
If Error Then
Print Error.Text
Print Error.Where
Print Error.Code
Endif
Wend
Close #CSV
Deudas.MostrarDeudas()
End
Llamadas al módulo
Public Sub btnCSVExport_Click()
Dim tabla As Table
Dialog.Path = User.Home
If Dialog.SelectDirectory() Then Return
tabla = FMain.Conectar1.Tables["deudas"]
If CSV.Exportar(FMain.Conectar1, tabla, Dialog.Path) Then
Message.Info("Se respaldo correctamente" & gb.NewLine & Dialog.Path &/ tabla.Name & ".csv")
Else
Message.Error("No se pudo respaldar!")
Endif
End
Public Sub btnImportarCSV_Click()
Dim tabla As Table
Dialog.Filter = ["*.csv", "Archivos .csv"]
Dialog.Path = User.Home
If Dialog.OpenFile() Then Return
tabla = FMain.Conectar1.Tables["deudas"]
CSV.Importar(FMain.Conectar1, tabla, Dialog.Path)
End
Dim tabla As Table
Dialog.Path = User.Home
If Dialog.SelectDirectory() Then Return
tabla = FMain.Conectar1.Tables["deudas"]
If CSV.Exportar(FMain.Conectar1, tabla, Dialog.Path) Then
Message.Info("Se respaldo correctamente" & gb.NewLine & Dialog.Path &/ tabla.Name & ".csv")
Else
Message.Error("No se pudo respaldar!")
Endif
End
Public Sub btnImportarCSV_Click()
Dim tabla As Table
Dialog.Filter = ["*.csv", "Archivos .csv"]
Dialog.Path = User.Home
If Dialog.OpenFile() Then Return
tabla = FMain.Conectar1.Tables["deudas"]
CSV.Importar(FMain.Conectar1, tabla, Dialog.Path)
End
No hay comentarios.:
Publicar un comentario