Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: fulltower en 20 Diciembre 2018, 04:27 am



Título: Buenas necesito ayuda como puedo enviar un RichTextBox a un datagridview en vb
Publicado por: fulltower en 20 Diciembre 2018, 04:27 am
Buenas necesito ayuda como puedo enviar un RichTextBox a un datagridview, aqui dejo una imagen del RichTextBox la cual tiene  separador que es : "|" nombre | apellido| edad | estado civil , y esto sea enviado al  datagriview donde sea nombre  apellido edad y estado civil, espero me puedan ayudar con esto saludos(http://prntscr.com/lx9n01) un ejemplo:

en el RichTextBox:

maria | perez | 35años | casada
jose | lopes | 40años | divorciado
vanessa | fernandez | 20años | soltera
luis | gomez | 21años | soltero

En el datagridview:
datagrid.Columns.Add("nombre")
datagrid.Columns.Add("apellido")
datagrid.Columns.Add("edad")
datagrid.Columns.Add("estado civil")

que se agreguen al datagridview el dato del richtextbox

es en formato vb
           


Título: Re: Buenas necesito ayuda como puedo enviar un RichTextBox a un datagridview en vb
Publicado por: Shell Root en 20 Diciembre 2018, 15:35 pm
:https://www.dotnetperls.com/split-vbnet


Título: Re: Buenas necesito ayuda como puedo enviar un RichTextBox a un datagridview en vb
Publicado por: raul2309 en 4 Enero 2019, 17:53 pm
La mejor solución es que uses un recordset desconectado:

Option explicit
DIM RS as recordset

en el load
set RS = new recordset

private sub createRS()
rs.fields.apend "nombre", vbstr

luego creas una rutina para descargar los fragmentos de testo en el RS y por ultimo conectas el DBGRID al recorset


Título: Re: Buenas necesito ayuda como puedo enviar un RichTextBox a un datagridview en vb
Publicado por: Eleкtro en 17 Enero 2019, 00:54 am
Solución simple y efectiva adaptada a tu escenario, mediante la clase TextFieldParser para parsear la cadena de texto en formato CSV:

Código
  1. Dim dt As New DataTable("csv")
  2. dt.Columns.Add("nombre")
  3. dt.Columns.Add("apellido")
  4. dt.Columns.Add("edad")
  5. dt.Columns.Add("estado civil")
  6.  
  7. Using csvText As New StringReader(Me.RichTextBox1.Text),
  8.      csvReader As New TextFieldParser(csvText) With {
  9.          .Delimiters = {"|"c},
  10.          .HasFieldsEnclosedInQuotes = False,
  11.          .TextFieldType = FieldType.Delimited
  12.      }
  13.  
  14.    Do Until csvReader.EndOfData
  15.        Try
  16.            Dim fields As String() = csvReader.ReadFields()
  17.            dt.Rows.Add(fields)
  18.        Catch ex As MalformedLineException
  19.            Throw
  20.        End Try
  21.    Loop
  22. End Using
  23.  
  24. Me.DataGridView1.DataSource = dt


Título: Re: Buenas necesito ayuda como puedo enviar un RichTextBox a un datagridview en vb
Publicado por: Eleкtro en 18 Enero 2019, 09:23 am
He escrito una solución más genérica:

Código
  1. <hidemodulename>
  2. Public module TextFieldParserExtensions
  3.  
  4. ''' ----------------------------------------------------------------------------------------------------
  5. ''' <summary>
  6. ''' Converts the source <see cref="TextFieldParser"/> to <see cref="DataTable"/>.
  7. ''' </summary>
  8. ''' ----------------------------------------------------------------------------------------------------
  9. ''' <param name="sender">
  10. ''' The source <see cref="TextFieldParser"/>.
  11. ''' </param>
  12. '''
  13. ''' <param name="useFirstRowAsColumns">
  14. ''' If set to <see langword="True"/>, use the items of the first row of
  15. ''' the source <see cref="TextFieldParser"/> to create the columns of
  16. ''' the resulting <see cref="DataTable"/>.
  17. ''' </param>
  18. ''' ----------------------------------------------------------------------------------------------------
  19. ''' <returns>
  20. ''' The resulting <see cref="DataTable"/>.
  21. ''' </returns>
  22. ''' ----------------------------------------------------------------------------------------------------
  23. <DebuggerStepThrough>
  24. <Extension>
  25. <EditorBrowsable(EditorBrowsableState.Always)>
  26. Public Function ToDataTable(ByVal sender As TextFieldParser, ByVal useFirstRowAsColumns As Boolean) As DataTable
  27.  
  28.    Dim dt As New DataTable() With {.CaseSensitive = False}
  29.    Dim customColumnsCreated As Boolean
  30.    Dim fields As String() = Nothing
  31.  
  32.    Do Until sender.EndOfData
  33.        Try
  34.            fields = sender.ReadFields()
  35.  
  36.        Catch ex As MalformedLineException
  37.            Throw
  38.  
  39.        End Try
  40.  
  41.        If Not (customColumnsCreated) AndAlso (useFirstRowAsColumns) Then
  42.            For Each field As String In fields
  43.                dt.Columns.Add(field)
  44.            Next field
  45.            customColumnsCreated = True
  46.            Continue Do
  47.        End If
  48.  
  49.        Try
  50.            dt.Rows.Add(fields)
  51.  
  52.        Catch ex As ArgumentException When Not (useFirstRowAsColumns) AndAlso (ex.HResult = -2147024809) ' Input array is longer than the number of columns in this table.
  53.            For i As Integer = 0 To ((fields.Count - dt.Columns.Count) - 1)
  54.                dt.Columns.Add()
  55.            Next i
  56.            dt.Rows.Add(fields)
  57.  
  58.        End Try
  59.  
  60.    Loop
  61.  
  62.    Return dt
  63. End Function
  64.  
  65. end module

Modo de empleo:
Código
  1. Dim csvTable As New DataTable()
  2.  
  3. Dim csvText As String =
  4.    <csv>
  5.         Name; Last Name; Age
  6.         Michael; Johnson Phillips; 26
  7.         William; Lee Williams; 34
  8.         Susan; Parker Evans; 32
  9.         Matilda; Garcia Martinez; 28
  10.    </csv>.Value
  11.  
  12. Using csvReader As New StringReader(csvText),
  13.      csvParser As New TextFieldParser(csvReader) With {
  14.      .Delimiters = {";"c},
  15.      .HasFieldsEnclosedInQuotes = False,
  16.      .TextFieldType = FieldType.Delimited
  17. }
  18.  
  19.    csvTable = TextFieldParserExtensions.ToDataTable(csvParser, useFirstRowAsColumns:=True)
  20. End Using
  21.  
  22. Me.DataGridView1.DataSource = csvTable

PD: todo esto y mucho más en mi librería comercial DevCase para .NET Framework en la página de CodeCanyon.net...