Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] Leer Rtf en Richtextbox desde Mysql en VB.Net

Estas en el tema de Leer Rtf en Richtextbox desde Mysql en VB.Net en el foro de .NET en Foros del Web. Hola pues llevo todo el día buscando y haciendo pruebas y nada de nada. Quisiera guardar el texto de un RichTextBox con formato (supongo que ...
  #1 (permalink)  
Antiguo 03/09/2012, 10:29
 
Fecha de Ingreso: septiembre-2012
Ubicación: México
Mensajes: 10
Antigüedad: 12 años, 2 meses
Puntos: 0
Pregunta Leer Rtf en Richtextbox desde Mysql en VB.Net

Hola pues llevo todo el día buscando y haciendo pruebas y nada de nada.

Quisiera guardar el texto de un RichTextBox con formato (supongo que como si fuera un rtf) en una base de datos con MySql desde un formulario, para después leerlo en otro formulario de la aplicación.

La parte de guardar el rtf creo que la he logrado y e intentado con 2 metodos:

1. Guardarlo en una columna con formato Text, desde la propiedad Rtf del RichTextBox. (Este me funciono) y me genera algo parecido a esto:
Código:
{
tf1ansiansicpg1252deff0deflang2058{fonttbl{f0fnilfcharset0 Microsoft Sans Serif;}}
{colortbl ;
ed40green40lue40;}
viewkind4uc1pardcf1f0fs17 Pruebapar
}
2. Generando un Array de Bytes y guardarlo en un campo Blop. (Este no pude lograrlo).

Pero he aquí el problema a la hora de leer los datos desde la DB me marca un error de incompatibilidad que dice: "El formato de archivo no es valido"

Les dejo mi código por si alguien me puede ayudar, Gracias! :)
Código vb:
Ver original
  1. Imports MySql.Data.MySqlClient
  2. Public Class VerInformeInterno
  3.     Sub LlenaTxt()
  4.         Dim deudor As DataTable = New DataTable
  5.         Try
  6.             ConectaDB()
  7.             deudor = MuestraDB("SELECT NoSocio,Nombre,TipoCredito,Expediente,Juzgado,EstadoActual,Gestor FROM deudor WHERE IdDeudor=" & BuscarInformeInterno.IdDeudor)
  8.             TxtNoSocioYFecha.Text = deudor.Rows(0).Item(0).ToString
  9.             TxtDeudorPrincipal.Text = deudor.Rows(0).Item(1).ToString
  10.             TxtTipoCredito.Text = deudor.Rows(0).Item(2).ToString
  11.             TxtExpediente.Text = deudor.Rows(0).Item(3).ToString
  12.             TxtJuzgado.Text = deudor.Rows(0).Item(4).ToString
  13.             TxtEstadoActual.Rtf = deudor.Rows(0).Item(5).ToString 'Aquí me marca el error!
  14.            TxtGestor.Text = deudor.Rows(0).Item(6).ToString
  15.             deudor = MuestraDB("SELECT Nombre FROM Aval1 WHERE IdAval1=" & BuscarInformeInterno.IdAval1)
  16.             TxtAval1.Text = deudor.Rows(0).Item(0).ToString
  17.             If BuscarInformeInterno.IdAval2 = 0 Then
  18.                 TxtAval2.Text = ""
  19.             Else
  20.                 deudor = MuestraDB("SELECT Nombre FROM Aval2 WHERE IdAval2=" & BuscarInformeInterno.IdAval2)
  21.                 TxtAval2.Text = deudor.Rows(0).Item(0).ToString
  22.             End If
  23.         Catch ex As Exception
  24.             MsgBox("Error al leer la Base de Datos" & vbCrLf & ex.Message, MsgBoxStyle.Critical, "¡ERROR!")
  25.         End Try
  26.     End Sub
  27.     Sub ModificaEstadoActual()
  28.         Try
  29.             ConectaDB()
  30.             Dim cmd As MySqlCommand
  31.             cmd = New MySqlCommand("UPDATE Deudor SET EstadoActual='" & TxtEstadoActual.Rtf & "' WHERE IdDeudor=" & BuscarInformeInterno.IdDeudor, conexion)
  32.             cmd.ExecuteNonQuery()
  33.             MsgBox("Guardado con exito", MsgBoxStyle.Information, "Exito!")
  34.         Catch ex As Exception
  35.             MsgBox("Error al leer la Base de Datos" & vbCrLf & ex.Message, MsgBoxStyle.Critical, "¡ERROR!")
  36.         End Try
  37.     End Sub
  38.  
  39.     Private Sub BtnEditar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnEditar.Click
  40.         If BtnEditar.Text = "Editar" Then
  41.             TxtEstadoActual.ReadOnly = False
  42.             BtnEditar.Text = "Guardar"
  43.             BtnSalir.Text = "Cancelar"
  44.         Else
  45.             TxtEstadoActual.ReadOnly = True
  46.             BtnEditar.Text = "Editar"
  47.             BtnSalir.Text = "Salir"
  48.             ModificaEstadoActual()
  49.         End If
  50.     End Sub
  51.  
  52.     Private Sub BtnSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSalir.Click
  53.         If BtnSalir.Text = "Salir" Then
  54.             Informes.BtnInterno.PerformClick()
  55.         Else
  56.             Dim tabla As DataTable = MuestraDB("SELECT EstadoActual FROM Deudor WHERE IdDeudor=" & BuscarInformeInterno.IdDeudor)
  57.             TxtEstadoActual.Rtf = tabla.Rows(0).Item(0)
  58.             TxtEstadoActual.ReadOnly = True
  59.             BtnSalir.Text = "Salir"
  60.             BtnEditar.Text = "Editar"
  61.         End If
  62.     End Sub
  63. End Class

Fuentes de donde he buscado: [URL="http://social.msdn.microsoft.com/Forums/es-MX/winformses/thread/6ff82dc9-dd33-4d47-95da-cdb2165e0715"]http://social.msdn.microsoft.com/Forums/es-MX/winformses/thread/6ff82dc9-dd33-4d47-95da-cdb2165e0715[/URL]

[URL="http://www.canalvisualbasic.net/foro/visual-basic-6-0/richtextbox-en-bd-1203/"]http://www.canalvisualbasic.net/foro/visual-basic-6-0/richtextbox-en-bd-1203/[/URL]

Había leído uno en el cual mencionaban que se guardara la propiedad Rtf del Richtextbox en un campo nvarchar en SqlServer pero no encontré su equivalente en MySql y lo guarde en un campo Text pero sigo sin poder recibir los datos desde el servidor para mostrarlos.


Gracias y Saludos desde México
  #2 (permalink)  
Antiguo 03/09/2012, 11:20
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 4 meses
Puntos: 267
Respuesta: Leer Rtf en Richtextbox desde Mysql en VB.Net

Hola fripas, creo que sería mejor que en vez de guardar el contenido, lo grabaras como un archivo en los temporales o en una dirección que tu veas conveniente, luego ese archivo lo guardas a la bd como un array de bytes. Si lo quieres leer,con una consulta llamas a tu array de bytes y le haces la inversa(creas el archivo en una ruta.... y abres el archivo en tu richtextbox). Espero te haya dado una idea. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #3 (permalink)  
Antiguo 03/09/2012, 11:34
 
Fecha de Ingreso: septiembre-2012
Ubicación: México
Mensajes: 10
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Leer Rtf en Richtextbox desde Mysql en VB.Net

Cita:
Iniciado por Aquaventus Ver Mensaje
lo grabaras como un archivo en los temporales o en una dirección que tu veas conveniente
Si había pensado en guardar el archivo en la misma pc, pero creo que se me hace más conveniente guardarlo en la misma DB, ya que la aplicación la usaran varios usuarios simultáneamente y quisiera que estuvieran los "archivos" disponibles para todos.

Cita:
Iniciado por Aquaventus Ver Mensaje
luego ese archivo lo guardas a la bd como un array de bytes. Si lo quieres leer,con una consulta llamas a tu array de bytes y le haces la inversa(creas el archivo en una ruta.... y abres el archivo en tu richtextbox.
Lo de guardarlo como array de bytes, por lo que entendí aquí: http://social.msdn.microsoft.com/Forums/es-MX/winformses/thread/6ff82dc9-dd33-4d47-95da-cdb2165e0715 mencionaban algo parecido pero no pude lograrlo.

Este es el código que proponían:
Cita:
Hola

El código está en VB.NET pero pasarlo a C# es muy sencillo.

Puedes obtener un array de Bytes con la información binaria del control RichTextbox, y guardar ese array en tu base de datos, cuando lo quieras recuperar vuelves a cargar un array de bytes desde la base de datos y lo asignas al RichTextBox.

Guardar el contenido de un richtextbox en un array de bytes:

'Creamos un memoryStream al que guardar nuestro texto
Dim MemContent As New System.IO.MemoryStream()
RichTextBox1.SaveFile(MemContent, RichTextBoxStreamType.RichText)
'Creamos un array de bytes al que guardar la info de nuestro MemoryStream
Dim Buffer(MemContent.Length) As Byte
Buffer = MemContent.GetBuffer()
Asignar el Array de Bytes de nuevo al richtextbox:

'Declaramos la variable Byte y le metemos el array que tenemos guardado.
Dim Buffer() As Byte
Buffer = RutinaDeNuestraBDQueDevuelveELArray()

'Definimos el memoryStream en el que meter nuestros Bytes
Dim MemContent As New System.IO.MemoryStream
MemContent.Read(Buffer, 0, Buffer.Length)
'Leemos el memoryStream en el RichTextBox como si fuese un archivo.
RichTextBox1.LoadFile(MemContent, RichTextBoxStreamType.RichText)
Un saludo, espero que te funcione!!
Aquaventus me puedes explicar la forma de generar el array de bytes, guardarlo y después leerlo desde el formulario, o ponerme algún ejemplo.

Gracias

Última edición por fripas; 03/09/2012 a las 11:37 Razón: Se perdía la información entre el link
  #4 (permalink)  
Antiguo 03/09/2012, 11:57
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 4 meses
Puntos: 267
Respuesta: Leer Rtf en Richtextbox desde Mysql en VB.Net

Ok, fripas, espérame un rato, que también tengo cosas que hacer en el trabajo. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #5 (permalink)  
Antiguo 03/09/2012, 11:59
 
Fecha de Ingreso: septiembre-2012
Ubicación: México
Mensajes: 10
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Leer Rtf en Richtextbox desde Mysql en VB.Net

Si esta bien gracias :D
  #6 (permalink)  
Antiguo 03/09/2012, 12:43
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 4 meses
Puntos: 267
Respuesta: Leer Rtf en Richtextbox desde Mysql en VB.Net

Haber... fripas :
1º Importas el System.IO;
2º En mi ejemplo mi RichTextBox se llama "rtb"(Que obviamente le tendrás que poner el nombre que lleva en tu formulario).
Almacenamos el RichTextBox en un directorio... por ejemplo en "Mis Documentos" :
Código C:
Ver original
  1. rtb.SaveFile(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal) + @"\prueba.rtf", RichTextBoxStreamType.RichNoOleObjs);
Luego pasamos el archivo a un array de bytes llamado arrFile :
Código C:
Ver original
  1. FileStream mi_archivo = new FileStream((System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal) + @"\prueba.rtf"), FileMode.OpenOrCreate, FileAccess.ReadWrite);
  2.             Byte[] arrFile = new Byte[mi_archivo.Length];
  3.  
  4.             BinaryReader reader = new BinaryReader(mi_archivo);
  5.             arrFile = reader.ReadBytes(Convert.ToInt32(mi_archivo.Length));
  6.             reader.Close();
esta variable arrFile, es la que tienes que guardar en tu campo blob.

3º Después de todo el 2do paso, haces la consulta a tu BD donde está almacenado tu archivo y lo almacenas por ejemplo en un datatable(Para este tendrías que importar el System.Data) :
Código C:
Ver original
  1. DataTable data;
  2. data = //TU CONSULTA CON UN MYSQLDATAADAPTER...
  3. if (data.Rows.Count != 0)
  4.                 {
  5.                     //Creo mi arreglo que almacenara los bytes del archivo
  6.                     Byte[] barrFile = (Byte[])(data.Rows[0][0]);
  7.                     //Creo el archivo apartir de los bytes
  8.                     using (FileStream newFile = new FileStream((System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal) + @"\prueba.rtf"), FileMode.Create, FileAccess.Write))
  9.                     {
  10.                     newFile.Write(barrFile, 0, barrFile.Length);
  11.                     newFile.Flush();
  12.                     newFile.Close();
  13.                     }
  14.                 }
Eso sería, espero haberte ayudado con tu problema. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #7 (permalink)  
Antiguo 03/09/2012, 22:43
 
Fecha de Ingreso: septiembre-2012
Ubicación: México
Mensajes: 10
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Leer Rtf en Richtextbox desde Mysql en VB.Net

Cita:
Iniciado por Aquaventus Ver Mensaje

esta variable arrFile, es la que tienes que guardar en tu campo blob.
He aquí mi problema, no he podido guardar el campo en la base de datos estaba intentando algo como esto:

Código vb:
Ver original
  1. Sub ModificaEstadoActual()
  2.         Try
  3.             'Generar archivo temporal
  4.            TxtEstadoActual.SaveFile("Temp\temporal.rtf", RichTextBoxStreamType.RichNoOleObjs)
  5.             'Convertirlo a un arreglo de bytes
  6.            Dim mi_archivo As FileStream = New FileStream(("Temp\temporal.rtf"), FileMode.OpenOrCreate, FileAccess.ReadWrite)
  7.             Dim arrFile() As Byte = New Byte((mi_archivo.Length) - 1) {}
  8.             Dim reader As BinaryReader = New BinaryReader(mi_archivo)
  9.             arrFile = reader.ReadBytes(Convert.ToInt32(mi_archivo.Length))
  10.             reader.Close()
  11.             'Guardarlo en DB
  12.            ConectaDB("Intranet")
  13.             Dim cmd As MySqlCommand
  14.  
  15.             cmd = New MySqlCommand("UPDATE Deudor SET EstadoActual='" & reader.ToString & "' WHERE IdDeudor=" & BuscarInformeInterno.IdDeudor, conexion) 'Creo que aquí esta el problema ya que en vez de guardar el array de bytes solo me guarda esto: "System.Byte[]"
  16.  
  17.             cmd.ExecuteNonQuery()
  18.             MsgBox("Guardado con exito", MsgBoxStyle.Information, "Exito!")
  19.         Catch ex As Exception
  20.             MsgBox("Error al leer la Base de Datos" & vbCrLf & ex.Message, MsgBoxStyle.Critical, "¡ERROR!")
  21.         End Try
  22.     End Sub

Me guarda en vez de el array de bytes un string que dice "System.Byte[]" y no puedo leer los datos que puedo hacer? Gracias.
  #8 (permalink)  
Antiguo 04/09/2012, 07:30
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 4 meses
Puntos: 267
Respuesta: Leer Rtf en Richtextbox desde Mysql en VB.Net

Si te dice "System.Byte[]" está bien, asi muestra el campo la tabla... ahora cómo que no puedes leer los datos???... Pasame el código que usas para el metodo de lectura... para ver qué haces mal.Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #9 (permalink)  
Antiguo 04/09/2012, 08:26
 
Fecha de Ingreso: septiembre-2012
Ubicación: México
Mensajes: 10
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Leer Rtf en Richtextbox desde Mysql en VB.Net

Código vb:
Ver original
  1. Sub LeerEstadoActual()
  2.         ConectaDB("Intranet")
  3.         Dim tabla As DataTable = MuestraDB("SELECT EstadoActual FROM Deudor WHERE IdDeudor=" & BuscarInformeInterno.IdDeudor)
  4.         Try
  5.         If tabla.Rows.Count <> 0 Then
  6.                 'Creo mi arreglo que almacenara los bytes del archivo
  7.                MsgBox(tabla.Rows(0)(0).ToString)
  8.             Dim barrFile() As Byte = CType(tabla.Rows(0)(0), Byte())
  9.             'Creo el archivo apartir de los bytes
  10.                Using newFile As New FileStream(("Temp\temporal1.rtf"), FileMode.Create, FileAccess.Write)
  11.                     newFile.Write(barrFile, 0, barrFile.Length)
  12.                     newFile.Flush()
  13.                     newFile.Close()
  14.                 End Using
  15.                 TxtEstadoActual.LoadFile("Temp\temporal1.rtf")
  16.             End If
  17.         Catch ex As Exception
  18.             MsgBox("Error al leer la Base de Datos" & vbCrLf & ex.Message, MsgBoxStyle.Critical, "¡ERROR!")
  19.         End Try
  20.     End Sub
Ese es mi código que utilizo para leer aunque sigo pensando que el problema esta cuando mando el arreglo binario a la base de datos:

Código vb:
Ver original
  1. cmd = New MySqlCommand("UPDATE Deudor SET EstadoActual='" & arrFile.ToString & "' WHERE IdDeudor=" & BuscarInformeInterno.IdDeudor, conexion)
  2.             cmd.ExecuteNonQuery()

Gracias
  #10 (permalink)  
Antiguo 04/09/2012, 09:15
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 4 meses
Puntos: 267
Respuesta: Leer Rtf en Richtextbox desde Mysql en VB.Net

Haber... porqué lo colocas comillas? sino es una cadena el campo...? Quítaselas y prueba así :
Código vb:
Ver original
  1. cmd = New MySqlCommand("UPDATE Deudor SET EstadoActual=" & arrFile & " WHERE IdDeudor=" & BuscarInformeInterno.IdDeudor, conexion)
  2.             cmd.ExecuteNonQuery()
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #11 (permalink)  
Antiguo 04/09/2012, 09:19
 
Fecha de Ingreso: septiembre-2012
Ubicación: México
Mensajes: 10
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Leer Rtf en Richtextbox desde Mysql en VB.Net

Me aparece este error

Cita:
Error 1 El operador '&' no está definido para los tipos 'String' y '1-matriz dimensional de Byte'.
  #12 (permalink)  
Antiguo 04/09/2012, 09:31
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 4 meses
Puntos: 267
Respuesta: Leer Rtf en Richtextbox desde Mysql en VB.Net

cierto lo olvidé, la mejor forma de trabajar es mediante sus mismo parametros del Mysqlcommand, te pongo este ejemplo :
Código vb:
Ver original
  1. Dim conn As New MySqlConnection
  2.                 Dim myCommand As New MySqlCommand
  3.  
  4.                 conn.ConnectionString = myConnString
  5.  
  6.                 myCommand.Connection = conn
  7.                 myCommand.CommandText = "UPDATE Deudor SET EstadoActual = ?estado WHERE IdDeudor = ?id"
  8.  
  9.                 myCommand.Parameters.Add("?estado", arrFile )
  10.                 myCommand.Parameters.Add("?id", BuscarInformeInterno.IdDeudor)
  11.  
  12.                 Try
  13.                         conn.Open()
  14.                         myCommand.ExecuteNonQuery()
  15.                 Catch myerror As MySqlException
  16.                         MsgBox("There was an error updating the database: " & myerror.Message)
  17.                 Finally
  18.                         conn.Close()
  19.                 End Try
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net

Última edición por Aquaventus; 04/09/2012 a las 09:56
  #13 (permalink)  
Antiguo 04/09/2012, 10:09
 
Fecha de Ingreso: septiembre-2012
Ubicación: México
Mensajes: 10
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Leer Rtf en Richtextbox desde Mysql en VB.Net

Funciona perfecto!

Dejo el código (tuve que hacer algunas modificaciones ya que me marcaba que algunas opciones habían cambiado.) esperando que le sirva a alguien más. Para que así ya este en C# el de Aquaventus y en VB.Net.

Se importa System.IO y Mysql.Data,MySqlClient

Código vb:
Ver original
  1. Imports MySql.Data.MySqlClient
  2. Imports System.IO

El codigo para generar el codigo binario y mandarlo a la base de datos. (Cambie .Parameters.Add por .Parameters.AddWithValue)

Código vb:
Ver original
  1. Try
  2.             'Generar archivo temporal
  3.            TxtEstadoActual.SaveFile("Temp\temporal.rtf", RichTextBoxStreamType.RichNoOleObjs)
  4.             'Convertirlo a un arreglo de bytes
  5.            Dim mi_archivo As FileStream = New FileStream(("Temp\temporal.rtf"), FileMode.OpenOrCreate, FileAccess.ReadWrite)
  6.             Dim arrFile() As Byte = New Byte((mi_archivo.Length) - 1) {}
  7.             Dim reader As BinaryReader = New BinaryReader(mi_archivo)
  8.             arrFile = reader.ReadBytes(Convert.ToInt32(mi_archivo.Length))
  9.             reader.Close()
  10.             'Guardarlo en DB
  11.            ConectaDB("Intranet") 'Se abre la conexión.
  12.            Dim cmd As New MySqlCommand
  13.             cmd.Connection = conexion 'Cadena de conexión.
  14.            cmd.CommandText = "UPDATE Deudor SET EstadoActual = ?estado WHERE IdDeudor = ?id"
  15.             cmd.Parameters.AddWithValue("?estado", arrFile)
  16.             cmd.Parameters.AddWithValue("?id", BuscarInformeInterno.IdDeudor)
  17.             cmd.ExecuteNonQuery()
  18.             'Mensaje de Confirmacion
  19.            MsgBox("Guardado con exito", MsgBoxStyle.Information, "Exito!")
  20.         Catch ex As Exception
  21.             MsgBox("Error al leer la Base de Datos" & vbCrLf & ex.Message, MsgBoxStyle.Critical, "¡ERROR!")
  22.         End Try

Y el código para recibir los datos de la DB, guardarlos en un archivo temporal y ponerlo en el RichTextBox

Código vb:
Ver original
  1. Try
  2.             ConectaDB("Intranet")
  3.             Dim tabla As DataTable = MuestraDB("SELECT EstadoActual FROM Deudor WHERE IdDeudor=" & BuscarInformeInterno.IdDeudor)
  4.             If tabla.Rows.Count <> 0 Then
  5.                 'Creo mi arreglo que almacenara los bytes del archivo
  6.                Dim barrFile() As Byte = CType(tabla.Rows(0)(0), Byte())
  7.                 'Creo el archivo apartir de los bytes
  8.                Using newFile As New FileStream(("Temp\temporal1.rtf"), FileMode.Create, FileAccess.Write)
  9.                     newFile.Write(barrFile, 0, barrFile.Length)
  10.                     newFile.Flush()
  11.                     newFile.Close()
  12.                 End Using
  13.                 'Abro el archivo temporal en el RichTextBox
  14.                TxtEstadoActual.LoadFile("Temp\temporal1.rtf")
  15.             End If
  16.         Catch ex As Exception
  17.             MsgBox("Error al leer la Base de Datos" & vbCrLf & ex.Message, MsgBoxStyle.Critical, "¡ERROR!")
  18.         End Try

Gracias Aquaventus por responderme de una manera muy eficaz y rápida.

De verdad estoy muy agradecido. :D

Saludos desde México!
  #14 (permalink)  
Antiguo 04/09/2012, 10:11
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 4 meses
Puntos: 267
Respuesta: Leer Rtf en Richtextbox desde Mysql en VB.Net

De nada fripas, cualquier problema que tengas no dudes en consultarnos por el Foro! Estamos dichosos de poder ayudarlos y siempre disponibles . Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #15 (permalink)  
Antiguo 04/09/2012, 10:14
 
Fecha de Ingreso: septiembre-2012
Ubicación: México
Mensajes: 10
Antigüedad: 12 años, 2 meses
Puntos: 0
De acuerdo Respuesta: Leer Rtf en Richtextbox desde Mysql en VB.Net

Gracias por todo!
  #16 (permalink)  
Antiguo 17/04/2013, 18:36
 
Fecha de Ingreso: febrero-2013
Mensajes: 10
Antigüedad: 11 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Leer Rtf en Richtextbox desde Mysql en VB.Net

Cita:
Iniciado por fripas Ver Mensaje
Funciona perfecto!

Dejo el código (tuve que hacer algunas modificaciones ya que me marcaba que algunas opciones habían cambiado.) esperando que le sirva a alguien más. Para que así ya este en C# el de Aquaventus y en VB.Net.

Se importa System.IO y Mysql.Data,MySqlClient

Código vb:
Ver original
  1. Imports MySql.Data.MySqlClient
  2. Imports System.IO

El codigo para generar el codigo binario y mandarlo a la base de datos. (Cambie .Parameters.Add por .Parameters.AddWithValue)

Código vb:
Ver original
  1. Try
  2.             'Generar archivo temporal
  3.            TxtEstadoActual.SaveFile("Temp\temporal.rtf", RichTextBoxStreamType.RichNoOleObjs)
  4.             'Convertirlo a un arreglo de bytes
  5.            Dim mi_archivo As FileStream = New FileStream(("Temp\temporal.rtf"), FileMode.OpenOrCreate, FileAccess.ReadWrite)
  6.             Dim arrFile() As Byte = New Byte((mi_archivo.Length) - 1) {}
  7.             Dim reader As BinaryReader = New BinaryReader(mi_archivo)
  8.             arrFile = reader.ReadBytes(Convert.ToInt32(mi_archivo.Length))
  9.             reader.Close()
  10.             'Guardarlo en DB
  11.            ConectaDB("Intranet") 'Se abre la conexión.
  12.            Dim cmd As New MySqlCommand
  13.             cmd.Connection = conexion 'Cadena de conexión.
  14.            cmd.CommandText = "UPDATE Deudor SET EstadoActual = ?estado WHERE IdDeudor = ?id"
  15.             cmd.Parameters.AddWithValue("?estado", arrFile)
  16.             cmd.Parameters.AddWithValue("?id", BuscarInformeInterno.IdDeudor)
  17.             cmd.ExecuteNonQuery()
  18.             'Mensaje de Confirmacion
  19.            MsgBox("Guardado con exito", MsgBoxStyle.Information, "Exito!")
  20.         Catch ex As Exception
  21.             MsgBox("Error al leer la Base de Datos" & vbCrLf & ex.Message, MsgBoxStyle.Critical, "¡ERROR!")
  22.         End Try

Y el código para recibir los datos de la DB, guardarlos en un archivo temporal y ponerlo en el RichTextBox

Código vb:
Ver original
  1. Try
  2.             ConectaDB("Intranet")
  3.             Dim tabla As DataTable = MuestraDB("SELECT EstadoActual FROM Deudor WHERE IdDeudor=" & BuscarInformeInterno.IdDeudor)
  4.             If tabla.Rows.Count <> 0 Then
  5.                 'Creo mi arreglo que almacenara los bytes del archivo
  6.                Dim barrFile() As Byte = CType(tabla.Rows(0)(0), Byte())
  7.                 'Creo el archivo apartir de los bytes
  8.                Using newFile As New FileStream(("Temp\temporal1.rtf"), FileMode.Create, FileAccess.Write)
  9.                     newFile.Write(barrFile, 0, barrFile.Length)
  10.                     newFile.Flush()
  11.                     newFile.Close()
  12.                 End Using
  13.                 'Abro el archivo temporal en el RichTextBox
  14.                TxtEstadoActual.LoadFile("Temp\temporal1.rtf")
  15.             End If
  16.         Catch ex As Exception
  17.             MsgBox("Error al leer la Base de Datos" & vbCrLf & ex.Message, MsgBoxStyle.Critical, "¡ERROR!")
  18.         End Try

Gracias Aquaventus por responderme de una manera muy eficaz y rápida.

De verdad estoy muy agradecido. :D

Saludos desde México!


Hola compañeros de foro, estoy utilizando este código y para generar el código binario y mandarlo a la BD funciona perfecto, PERO la parte de recibir los datos de la BD no la he podido conseguir, ya que supongo que MuestraBd es un dato de tipo MySqlCommand, pero me marca este error: No se puede Indizar la clase MySql.Data.MySqlClient.MySqlCommand, porque no tiene ninguna propiedad predeterminada.

Podrian decirme que tipo de datos es MuestraBD o alguna otra idea para mostrar los datos en RichtextBox.rtf.

Gracias de antemano por su ayuda.
  #17 (permalink)  
Antiguo 18/04/2013, 00:11
 
Fecha de Ingreso: septiembre-2012
Ubicación: México
Mensajes: 10
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Leer Rtf en Richtextbox desde Mysql en VB.Net

Cita:
Iniciado por Gloritza Ver Mensaje
Hola compañeros de foro, estoy utilizando este código y para generar el código binario y mandarlo a la BD funciona perfecto, PERO la parte de recibir los datos de la BD no la he podido conseguir, ya que supongo que MuestraBd es un dato de tipo MySqlCommand, pero me marca este error: No se puede Indizar la clase MySql.Data.MySqlClient.MySqlCommand, porque no tiene ninguna propiedad predeterminada.

Podrian decirme que tipo de datos es MuestraBD o alguna otra idea para mostrar los datos en RichtextBox.rtf.

Gracias de antemano por su ayuda.
MuestraDB es una función que tengo en un Modulo, lo que hace es, leer el parametro query y convertirlo en un datatable.

Te paso el código de la función y también adjunto el de ConectaDB ya que MuestraDB llama al anterior.

Código vb:
Ver original
  1. Friend conexion As MySqlConnection
  2. Friend server As String
  3. Public Sub ConectaDB(Optional ByVal Base As String = "")
  4.         Try
  5.             If Base = "" Then
  6.                 Base = SeleccionDB.DB
  7.             End If
  8.             Dim SPath As String = "conecta.txt"
  9.             server = My.Computer.FileSystem.ReadAllText(SPath).ToString
  10.             conexion = New MySqlConnection()
  11.             conexion.ConnectionString =
  12.                 "server=" & server & ";" &
  13.                 "user id=root;" &
  14.                 "password=toor;" &
  15.                 "port=3306;" &
  16.                 "database=" & Base & ";"
  17.             conexion.Open()
  18.         Catch ex As Exception
  19.             MsgBox("Error al conectar al servidor MySQL " &
  20.                    vbCrLf & vbCrLf & ex.Message,
  21.                    MsgBoxStyle.OkOnly + MsgBoxStyle.Critical)
  22.         End Try
  23.     End Sub
  24.  
  25.     Public Function MuestraDB(ByVal Query As String)
  26.         Dim ds As DataSet = New DataSet()
  27.         Dim adaptador As MySqlDataAdapter
  28.         Dim tabla As DataTable = New DataTable
  29.         Dim constructor As MySqlCommandBuilder
  30.  
  31.         Try
  32.             adaptador = New MySqlDataAdapter(Query, conexion)
  33.             constructor = New MySqlCommandBuilder(adaptador) 'Se interpreta la consulta
  34.            adaptador.Fill(tabla) 'Se guarda los registros obtenido en la variable tabla
  35.        Catch ex As Exception
  36.             MsgBox(ex.Message, MsgBoxStyle.Critical, "Error al leer la base de datos")
  37.         End Try
  38.         Return tabla
  39.     End Function
  40.     Public Sub LimpiarPanel(ByVal Panel As Panel)
  41.         ' recorre todos los controles que hay en el formulario
  42.        For Each Control In Panel.Controls
  43.             ' verifica que el control es de tipo TextBox
  44.            If TypeOf Control Is TextBox Then
  45.                 '... Si es un Textbox, entonces lo limpia
  46.                Control.Text = ""
  47.             End If
  48.         Next
  49.     End Sub

Saludos!, espero que te sea de ayuda.

Última edición por fripas; 18/04/2013 a las 00:14 Razón: Olvidé poner la variable global conexion.
  #18 (permalink)  
Antiguo 22/04/2013, 17:23
 
Fecha de Ingreso: febrero-2013
Mensajes: 10
Antigüedad: 11 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Leer Rtf en Richtextbox desde Mysql en VB.Net

Hola Fripas tu respuesta me saco de apuros.

Foros del Web; que gran plataforma, la capacidad y excelencia en las respuestas hacen que muchas mas personas confíen y disfruten de todos los contenidos aquí propuestos; su trabajo es un gran aporte a esta gran industria del software que día a día nos encargamos de hacer crecer en conjunto.


"Oooooooooh, nos has salvados, estamos agradecidos."

  #19 (permalink)  
Antiguo 23/04/2013, 09:24
 
Fecha de Ingreso: septiembre-2012
Ubicación: México
Mensajes: 10
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Leer Rtf en Richtextbox desde Mysql en VB.Net

Que bueno que te sirvió, cualquier cosa, aquí estamos!

Saludos! :D

Etiquetas: guardarenmysql, leerbasededatos, mysql, richtextbox, rtf, vbnet
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 09:13.