Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => 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 (vbnet) [Seleccionar]
Dim dt As New DataTable("csv")
dt.Columns.Add("nombre")
dt.Columns.Add("apellido")
dt.Columns.Add("edad")
dt.Columns.Add("estado civil")

Using csvText As New StringReader(Me.RichTextBox1.Text),
     csvReader As New TextFieldParser(csvText) With {
         .Delimiters = {"|"c},
         .HasFieldsEnclosedInQuotes = False,
         .TextFieldType = FieldType.Delimited
     }

   Do Until csvReader.EndOfData
       Try
           Dim fields As String() = csvReader.ReadFields()
           dt.Rows.Add(fields)
       Catch ex As MalformedLineException
           Throw
       End Try
   Loop
End Using

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 (vbnet) [Seleccionar]

<hidemodulename>
Public module TextFieldParserExtensions

''' ----------------------------------------------------------------------------------------------------
''' <summary>
''' Converts the source <see cref="TextFieldParser"/> to <see cref="DataTable"/>.
''' </summary>
''' ----------------------------------------------------------------------------------------------------
''' <param name="sender">
''' The source <see cref="TextFieldParser"/>.
''' </param>
'''
''' <param name="useFirstRowAsColumns">
''' If set to <see langword="True"/>, use the items of the first row of
''' the source <see cref="TextFieldParser"/> to create the columns of
''' the resulting <see cref="DataTable"/>.
''' </param>
''' ----------------------------------------------------------------------------------------------------
''' <returns>
''' The resulting <see cref="DataTable"/>.
''' </returns>
''' ----------------------------------------------------------------------------------------------------
<DebuggerStepThrough>
<Extension>
<EditorBrowsable(EditorBrowsableState.Always)>
Public Function ToDataTable(ByVal sender As TextFieldParser, ByVal useFirstRowAsColumns As Boolean) As DataTable

   Dim dt As New DataTable() With {.CaseSensitive = False}
   Dim customColumnsCreated As Boolean
   Dim fields As String() = Nothing

   Do Until sender.EndOfData
       Try
           fields = sender.ReadFields()

       Catch ex As MalformedLineException
           Throw

       End Try

       If Not (customColumnsCreated) AndAlso (useFirstRowAsColumns) Then
           For Each field As String In fields
               dt.Columns.Add(field)
           Next field
           customColumnsCreated = True
           Continue Do
       End If

       Try
           dt.Rows.Add(fields)

       Catch ex As ArgumentException When Not (useFirstRowAsColumns) AndAlso (ex.HResult = -2147024809) ' Input array is longer than the number of columns in this table.
           For i As Integer = 0 To ((fields.Count - dt.Columns.Count) - 1)
               dt.Columns.Add()
           Next i
           dt.Rows.Add(fields)

       End Try

   Loop

   Return dt
End Function

end module


Modo de empleo:
Código (vbnet) [Seleccionar]
Dim csvTable As New DataTable()

Dim csvText As String =
   <csv>
        Name; Last Name; Age
        Michael; Johnson Phillips; 26
        William; Lee Williams; 34
        Susan; Parker Evans; 32
        Matilda; Garcia Martinez; 28
   </csv>.Value

Using csvReader As New StringReader(csvText),
     csvParser As New TextFieldParser(csvReader) With {
     .Delimiters = {";"c},
     .HasFieldsEnclosedInQuotes = False,
     .TextFieldType = FieldType.Delimited
}

   csvTable = TextFieldParserExtensions.ToDataTable(csvParser, useFirstRowAsColumns:=True)
End Using

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...