Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: [VB.NET]Funzione split

  1. #1
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303

    [VB.NET]Funzione split

    ho la necessità di eseguire uno slpit da una colonna DataGridView, per poi inserire i dati in lw.
    Io eseguo:
    codice:
            For i As Int32 = 0 To DataGridView1.Rows.Count - 1
               
                Dim s, sx As String
                Dim Info
    
                Dim TestString As String = DataGridView1.Item(0, i).Value
                s = TestString.ToString
                Info = Split(s, " ")
    
                For si As Integer = 0 To UBound(Info)
                    Application.DoEvents()
                    sx = Info(si) & " " & vbCrLf 'Chr(13)
                    '    MsgBox(Info(si))
                    If si <= 1 Then
                        Dim litem As New ListViewItem
                        litem = ListView1.Items.Add(Info(0).ToString)
                        litem.SubItems.Add(Info(1).ToString)
                    Else
                        Dim litem As New ListViewItem
                        litem = ListView1.Items.Add(Info(0).ToString & " " & Info(1).ToString)
                        litem.SubItems.Add(Info(2).ToString)
    
                    End If
                Next
            Next
    ma in questo modo mi inserisce i record raddoppiati, ed la funzione split mi viene eseguita non correttamente faccio un esempio di nomi.

    codice:
    Pippo Marco Fabio è quello che devo splittare
    lo split viene aggiunto nella lw in questo modo:
    Pippo | Marco
    Pippo | Marco
    Pippo Marco | Fabio
    come è risolvibile?

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    codice:
    For si As Integer = 0 To UBound(Info)
                    Application.DoEvents()
                    sx = Info(si) & " " & vbCrLf 'Chr(13)
                    '    MsgBox(Info(si))
                    If si <= 1 Then
                        Dim litem As New ListViewItem
                        litem = ListView1.Items.Add(Info(0).ToString)
                        litem.SubItems.Add(Info(1).ToString)
                    Else
                        Dim litem As New ListViewItem
                        litem = ListView1.Items.Add(Info(0).ToString & " " & Info(1).ToString)
                        litem.SubItems.Add(Info(2).ToString)
    
                    End If
                Next
    nel caso tu abbia 3 nomi, il for fa 3 giri, nei primi 2 con si = 0 e si = 1 inserisci sempre info(0) e info(1) come subitem.. quindi inserisci 2 volte lo stesso elemento

    ps: la funzione split funziona a dovere controlla meglio..

  3. #3
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    ciao,
    ma cosa devo controllare?

  4. #4
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    tu hai detto che la funzione split funziona male..

    la funzione split mi viene eseguita non correttamente
    non è vero perchè contiene i 3 nomi che desideravi in posizione 0,1,2

    If si <= 1 Then
    Dim litem As New ListViewItem
    litem = ListView1.Items.Add(Info(0).ToString)
    litem.SubItems.Add(Info(1).ToString)

  5. #5
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    tu hai detto che la funzione split funziona male..

    la funzione split mi viene eseguita non correttamente
    non è vero perchè contiene i 3 nomi che desideravi in posizione 0,1,2

    If si <= 1 Then
    Dim litem As New ListViewItem
    litem = ListView1.Items.Add(Info(0).ToString)
    litem.SubItems.Add(Info(1).ToString)
    nel for il valore di si diventerà 0,1,2..
    quindi in questo caso entrerà 2 volte scrivendoti quindi 2 volte info(0) e info(1)

    Else
    Dim litem As New ListViewItem
    litem = ListView1.Items.Add(Info(0).ToString & " " & Info(1).ToString)
    litem.SubItems.Add(Info(2).ToString)
    qui entra solo l'ultima volta e sctive info(0) e info(1) nell'item con info(2) nel subitem..

    In soldoni il risultato è esatto ma probabilmente non è ciò che volevi..

    Esponi il risultato che vuoi ottenere così ti aiutiamo..

  6. #6
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    Originariamente inviato da Stoicenko
    tu hai detto che la funzione split funziona male..



    non è vero perchè contiene i 3 nomi che desideravi in posizione 0,1,2
    ok,
    la funzione viene eseguita perfettamente, ma allora come faccio a risolvere il problema dell' inserimento?

  7. #7
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    Spiega meglio cosa vuoi ottenere nella listview..

  8. #8
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    Originariamente inviato da Stoicenko
    Spiega meglio cosa vuoi ottenere nella listview..
    nella lw devo inserire la funzione split, se i valori presentano due nomi li inserisco senza split ma se sono tre allora devo fare lo split

  9. #9
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    ok.. però ora non capisco il for interno.. cioè quando fai lo split hai i tuoi 3 valori dentro info.. senza il for basta controllare info.Lenght per sapere quanti sono questi valori e se sono 2 li inserisci con il pipe altrimenti no..

  10. #10
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    un po' di codice:

    Codice PHP:
    For As Int32 0 To DataGridView1.Rows.Count 1
               
                Dim s
    sx As String
                Dim Info

                Dim TestString 
    As String DataGridView1.Item(0i).Value
                s 
    TestString.ToString
                Info 
    Split(s" ")
            
                
    Application.DoEvents()
                if 
    Info.Lenght<3             'qui ne ha 1 o 2

                    if Info.Lenght == 1     '
    qui ne ha 1             
                        Dim litem 
    As New ListViewItem
                        litem 
    ListView1.Items.Add(Info(0).ToString)
                   else                          
    'qui ne ha 2
                        Dim litem As New ListViewItem
                        litem = ListView1.Items.Add(Info(0).ToString)
                        litem.SubItems.Add(Info(1).ToString)
                   End If
                else
                    sx = Info(1) & " " & vbCrLf '
    Chr(13)
                    
    Dim litem As New ListViewItem
                    litem 
    ListView1.Items.Add(Info(0).ToString " " Info(1).ToString)
                    
    litem.SubItems.Add(Info(2).ToString)

                
    End If
            
    Next 
    non l'ho testato e considera solo 3 nomi.. usalo come falsariga

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.