Exportar .sdf a .txt en visual basic .net

Disculpa desarrollo en visual studio 2005 en el lenguaje visual basic, con una aplicación para windows ce 5.0 tengo el dispositivo y ya logro conectar y hacer un programa creando base de datos conectado a sql server compact edition, el problema aquí es que quisiera que lo que hay en la base de datos .SDF convertir el contenido a .txt si se pudiera desde el programa o algo estaría muy bien, investigue sobre como podría hacerle desplegando todo el contenido en un datagrid y de ahí querer ir escribiendo todo en un .txt pero no encuentro nada relacionado a hacer eso quisiera que me ayudaras a hacerlo :( t mando esa parte de código que podría servir solo es la desplegada al datagrid por favor ayudame! Me urge hacerlo amigo
Dim a As New Data.SqlServerCe.SqlCeConnection("Data Source = .\Program Files\otroproyecto\capturas.sdf; Password=; Encrypt DataBase=False;")
a.Open()
view ="select ID,ZAFRA,NUMERO,LOTE,LABOR from captura_valores"
If (Not view.Trim.Equals("")) Then
Try
Adapt =New SqlCeDataAdapter(view, a)
Adapt.Fill(Table)
Me.DataGrid1.DataSource = Table
Catch ex As Exception
End Try
End If
a.Close()
'Table.Rows.Clear()

4 respuestas

Respuesta
1
Tu código antes de asignar el resultado del DataTable al grid, hasta allí esta muy bien, luego po que hay que hacer es recorrer el datatgrid y armar el archivo de texto, en este ejemplo lo voy a separar por comas:
...
Dim writer as new StreamWriter("\My Documents\Archivo.txt")
for x as int32 = 0 to Table.Rows.Count - 1
Dim linea as String
linea = Table.Rows(x).Columns(0).ToString() & "," & Table.Rows(x).Columns(1).ToString() & ", " & Table.Rows(x).Columns(2).ToString() & ", " & Table.Rows(x).Columns(3).ToString() & ", " & Table.Rows(x).Columns(4).ToString()
write.writeline(linea)
next
write.flush()
write.close()
...
Aquí el resto de cosas, no es necesario que lo coloques en la grilla, si quieres seguir mostrándolos en la grilla puedes dejar el código.
Experto disculpa agrego tu código y me marca error siguientes: 'Columns' no es un miembro de 'System. Data.DataRow'. ¿Y el otro error es Error de resolución de sobrecarga porque ninguna de las funciones 'Write' a las que se tiene acceso acepta este número de argumentos
es lo malo de usar visual para dispositivos windows ce verdad? ¿Cambian ciertas cosas si me puedes ayudar en esa parte del error por favor? Para ya calarlo :)
Experto disculpa hice lo siguiente corrigiendo esa parte quedando así:
Dim writer As New StreamWriter("\My Documents\Archivo.txt")
        For x As Int32 = 0 To Table.Rows.Count - 1
            Dim linea As String
            linea = Table.Rows(x).Table.Columns(0).ToString() & "," & Table.Rows(x).Table.Columns(1).ToString() & ", " & Table.Rows(x).Table.Columns(2).ToString() & ", " & Table.Rows(x).Table.Columns(3).ToString() & ", " & Table.Rows(x).Table.Columns(4).ToString()
            writer.WriteLine(linea)
        Next
        writer.Flush()
        writer.Close()
No se si este bien... pero mira lo que me escribió en mi archivo de texto fue lo siguiente:
Id, zafra, numero, lote, labor
Id, zafra, numero, lote, labor
Id, zafra, numero, lote, labor
Id, zafra, numero, lote, labor
Id, zafra, numero, lote, labor
Quisiera que envés de que me escriba el nombre de las columnas, fuera el contenido de cada campo por favor así todo lo que contenga en las filas de la grilla por favor amigo! Casi me siento del otro lado con tu ayuda que me esta sirviendo de muchísimo!
EL código que te puse lo puse de memoria, yo no estoy acostumbrado a utilizar datatable que es lo que tu usas, lo que hago es orientarte de como debes hacer las cosas, lo más lógico es que se te presenten errores si copias el código tal cual te lo envío. Aquí lo importante es que sepas como hacerlo y lo que no conoces buscar información y aprender para que sirve los comandos que te indique en el código.
Con respecto a Table. Rows(x). Table. Columns(4). ToString(), creo que es Table. Rows(x). Columns(4). ToString(), o el nombre de la columna en Columns, sino cambia a Items por Columns
Respuesta
1
¿Lo quieres hacer a nivel de visual o de SQL?
Que tal amigo, lo quiero hacer a nivel de visual por favor si me puedes agregar la porción de código que a lo mejor me faltaría no se si tu idea también seria recorrer el datagrid y armar el archivo .txt si se puede así por favor incrustame el código necesario de verdad te lo agradecería demasiado experto!
Te tengo esta solución, asumiendo que el objeto al que te refieres como Table, es un Datatable...
Donde dice Ruta debes de poner la ruta donde quieres que se almacene tu archivo.
Dim a As New Data.SqlServerCe.SqlCeConnection("Data Source = .\Program Files\otroproyecto\capturas.sdf; Password=; Encrypt DataBase=False;") 
a.Open() 
view ="select ID,ZAFRA,NUMERO,LOTE,LABOR from captura_valores" 
If (Not view.Trim.Equals("")) Then 
Try 
Adapt =New SqlCeDataAdapter(view, a) 
Adapt.Fill(Table)
Dim i, k As Integer
Dim aux As String = ""
For i = 0 To Table.Rows.Count - 1
For k = 0 To 4
aux = aux + Table.Rows(i).Item(k) + ", "
Next
Dim objStreamWriter As StreamWriter
objStreamWriter = File.AppendText("Ruta\NombreArchivo.txt")
objStreamWriter.WriteLine(aux)
objStreamWriter.Close()
aux = ""
Next
MsgBox("Se escribio con exito")
Me.DataGrid1.DataSource = Table 
Catch ex As Exception 
End Try 
End If 
a.Close() 
Table. Rows. Clear()
Cualquier cosa me cuentas...
Respuesta
1
'Te paso este fragmento de De código que me facilito un amigo, espero te de una idea y 'te sirva, saludos y bendiciones =)
Private Sub imprime_txt()
Try
Dim sw As New System.IO.StreamWriter("C://TEmporal.txt")
For i As Integer = 0 To dg1.RowCount - 1
Dim texto As String = "|" & dg1.Rows(i).Cells("g_rfc").Value
texto +=  dg1.Rows(i).Cells("Captura_Valores").Value
sw.WriteLine(texto)
Next
sw.Close()
end sub
Dim a As New Data.SqlServerCe.SqlCeConnection("Data Source = .\Program Files\otroproyecto\capturas.sdf; Password=; Encrypt DataBase=False;")
a.Open()
view ="select ID,ZAFRA,NUMERO,LOTE,LABOR from captura_valores"
If (Not view.Trim.Equals("")) Then
Try
Adapt =New SqlCeDataAdapter(view, a)
Adapt.Fill(Table)
Me.DataGrid1.DataSource = Table
imprime_txt() ' aqui mandas llamar la rutina
Catch ex As Exception
End Try
End If
a.Close()
Respuesta
1
Eh entendido que quieres pasar todos los datos de tu base de datos a un .txt
Para hacerlo deberías conectarte a tu base de datos, recorrerla y mientras la recorres agregar los datos a un .txt
Primero que nada debemos Importar:
Imports System. IO
Tenemos 3 variables (asumo que no tengo que explicar como conectarme a una base de datos):
Con (la variable de conexión a la base)
Cmd (la variable command que utilizaremos para enviar consultas)
Read (la variable que utilizaremos para recorrer la base de datos)
Con.ConnectionString = "Tu cadena de conexion"
Cmd.CommandText = "SELECT * FROM Tabla"
Cmd.Connection = Con
Con.Open()
Read = Cmd.ExecuteRead();
If File.Exists("path_de_tu_archivo") Then
   File.Delete("path_de_tu_archivo")
End If
Dim archivo As New StreamWriter("path_de_tu_archivo.txt")

Do While Read.Read
   archivo.WriteLine(Read.Item("Nombre_de_Tu_Campo"))
Loop
archivo.Close();
Con.Close();
Te dejo un adjunto con el cual podrás probar. Te aclaro que uso Acces en el ejemplo.
http://www.megaupload.com/?d=AY3Q629N

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas