none
Separar un texto en dos filas de un datagridview vb2008 RRS feed

  • Pregunta

  • Buen dia los vuelvo a molestar con otra interrogante mia mi pregunta es la siguiente existe alguna manera de separar un texto dependiendo de su longitud y ponerlo en dos datarows? por ejemplo tengo un concepto en una textbox de 100 caracteres y necesito que tome los primeros 83 caracteres los pase a una datarow y los 17 restantes los los pase a otra. se puede hacer esto? de que manera?

    OAO estadia muy agradecida si me pudieran responder mi pregunta :) por mientras segire investigando por que la funcion split no me ha funcionado :(

    martes, 19 de marzo de 2013 17:15

Respuestas

  • gracias, no habia vuelto a checar el foro pero di con la respuesta al fin primero estabeci una condicion de que si el texto era menor a 63 lo pasa tal como esta, si no la evalua en una serie de casos, alli en cada caso primero toma los primeros 63 caracteres con la funcion left, despues en otra variable con la funcion Mid toma otro segmento de la cadena de caracteres y lo almaceno en otra variable tambien con left y al final ya los agrago al datagridview. Gracias de todas formas por tomarte tu tiempo en responderme n_n

    Select Case txtle
                    Case 63 To 126
                        Dim TestString As String = TextBox1.Text
                        Dim subString As String = Microsoft.VisualBasic.Left(TestString, 63)
                        Dim segundafila As String = Mid(TestString, 64, 126)
                        Me.ComprasDataGridView.Rows.Add(Me.TextBox19.Text, subString, Me.TextBox18.Text, Me.TextBox4.Text, Me.TextBox2.Text)
                        Me.ComprasDataGridView.Rows.Add("", segundafila, "", "", "")
                    Case 126 To 189
                        Dim TestString As String = TextBox1.Text
                        Dim subString As String = Microsoft.VisualBasic.Left(TestString, 63)
                        Dim segundafila As String = Mid(TestString, 64, 126)
                        Dim dos As String = Microsoft.VisualBasic.Left(segundafila, 63)
                        Dim trecerafila As String = Mid(TestString, 127, 189)
                        Dim tres As String = Microsoft.VisualBasic.Left(trecerafila, 63)
                        Me.ComprasDataGridView.Rows.Add(Me.TextBox19.Text, subString, Me.TextBox18.Text, Me.TextBox4.Text, Me.TextBox2.Text)
                        Me.ComprasDataGridView.Rows.Add("", dos, "", "", "")
                        Me.ComprasDataGridView.Rows.Add("", tres, "", "", "")
            Case Else
                        MessageBox.Show("El Texto es demaciado largo de procesar")
                End Select

    • Marcado como respuesta Sawaa miércoles, 20 de marzo de 2013 17:40
    miércoles, 20 de marzo de 2013 17:40

Todas las respuestas

  • Algo así?

     TextBox txt.Text="";
    DataRow a;

    DataRow b; 

    a[1]=txt.Text.Substring(0,82);
    b[1]=txt.Text.Substring(83);

    Estoy suponiendo que es la columna 1 de cada datarow ya enlazado, uso el método Substring
    que devuelve una subcadena que tiene métodos sobrecargados  uso uno de 2 parámetros, desde y hasta y en la siguiente línea uso en el que indico desde y hasta el final.
    Ojo que si no tiene mínimamente 83 caracteres te va a arrojar una excepción, así que o bien lo
    encerrás en un bloque try catch o bien colocás un if diciendo que haga la operación sólo si es mayor a 83.
    Saludos.

             

    BECKLESPINAX

    miércoles, 20 de marzo de 2013 5:31
  • gracias, no habia vuelto a checar el foro pero di con la respuesta al fin primero estabeci una condicion de que si el texto era menor a 63 lo pasa tal como esta, si no la evalua en una serie de casos, alli en cada caso primero toma los primeros 63 caracteres con la funcion left, despues en otra variable con la funcion Mid toma otro segmento de la cadena de caracteres y lo almaceno en otra variable tambien con left y al final ya los agrago al datagridview. Gracias de todas formas por tomarte tu tiempo en responderme n_n

    Select Case txtle
                    Case 63 To 126
                        Dim TestString As String = TextBox1.Text
                        Dim subString As String = Microsoft.VisualBasic.Left(TestString, 63)
                        Dim segundafila As String = Mid(TestString, 64, 126)
                        Me.ComprasDataGridView.Rows.Add(Me.TextBox19.Text, subString, Me.TextBox18.Text, Me.TextBox4.Text, Me.TextBox2.Text)
                        Me.ComprasDataGridView.Rows.Add("", segundafila, "", "", "")
                    Case 126 To 189
                        Dim TestString As String = TextBox1.Text
                        Dim subString As String = Microsoft.VisualBasic.Left(TestString, 63)
                        Dim segundafila As String = Mid(TestString, 64, 126)
                        Dim dos As String = Microsoft.VisualBasic.Left(segundafila, 63)
                        Dim trecerafila As String = Mid(TestString, 127, 189)
                        Dim tres As String = Microsoft.VisualBasic.Left(trecerafila, 63)
                        Me.ComprasDataGridView.Rows.Add(Me.TextBox19.Text, subString, Me.TextBox18.Text, Me.TextBox4.Text, Me.TextBox2.Text)
                        Me.ComprasDataGridView.Rows.Add("", dos, "", "", "")
                        Me.ComprasDataGridView.Rows.Add("", tres, "", "", "")
            Case Else
                        MessageBox.Show("El Texto es demaciado largo de procesar")
                End Select

    • Marcado como respuesta Sawaa miércoles, 20 de marzo de 2013 17:40
    miércoles, 20 de marzo de 2013 17:40
  • Bueno, Me alegro que hayas podido solucionarlo y recordá que como alternativa a Left en Visual Basic también tenés el método Substring en cada String que se usa como detallé en la otra respuesta.
    Saludos.

    BECKLESPINAX

    miércoles, 20 de marzo de 2013 18:37