Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [VB.NET] lettura da database e scrittura su listbox strana, primo valore duplicato

    Salve a tutti.
    Dopo aver risolto il precedente problema della select ora tanto per cambiare ne ho un altro XD
    quando seleziono una data dal calendario eseguo una select per controllare se ci sono già dei promemoria per quella data, e se si elencarli in una listbox.
    Ho notato che mi succede una cosa strana: il primo risultato viene scritto due volte, mentre l'ultimo viene perso.. se ad esempio per la data del 2 agosto ho i promemoria
    test
    test2
    test3

    nella listbox mi stampa le righe in questo modo
    test
    test
    test2

    prima di ogni riempimento azzero la textbox.

    Eccovi un pò di codice

    codice:
        Public Sub Controlla_Data(ByVal selectedDate As Date)
            Dim controlla As Odbc.OdbcCommand
            Dim List As Odbc.OdbcDataReader
            Dim SQL As String = "select message from promemoria where data = '" + DataOnly(selectedDate).ToString + "'"
            controlla = New Odbc.OdbcCommand(SQL, Conn)
            Conn.Open() 'Conn è dichiarato globale
            List = controlla.ExecuteReader()
            If List.HasRows Then
                Label3.Text = "Numero promemoria per il giorno selezionato : " + List.RecordsAffected.ToString
                ListBox1.Items.Clear()
                For i = 1 To List.RecordsAffected
                    ListBox1.Items.Add(List.GetValue(0).ToString())
                    List.Read()
                Next
            Else
                ListBox1.Items.Clear()
                Label3.Text = "Nessun promemoria presente per il giorno selezionato"
            End If
            List.Close()
            Conn.Close()
        End Sub
    DataOnly è una semplice funzioncina per formattare la data per usarla comodamente con postgres, se vi serve.. (non penso XD)
    codice:
        Public Function DataOnly(ByVal Data As String) As String
            Return Format(DateTime.Parse(Data), "dd/MM/yyyy")
        End Function
    debuggando passo passo non mi sembra che ci siano dei problemi. sembra quasi che mi salti una read().

    Spero che il problema sia di facile soluzione, almeno per voi
    Grazie in anticipo. Cordiali saluti

  2. #2
    Ho risolto da me..
    invece del ciclo for ho utilizzato un ciclo do while loop

    codice:
        Public Sub Controlla_Data(ByVal selectedDate As Date)
            Dim controlla As Odbc.OdbcCommand
            Dim List As Odbc.OdbcDataReader
            Dim SQL As String = "select message from promemoria where data = '" + DataOnly(selectedDate).ToString + "'"
            controlla = New Odbc.OdbcCommand(SQL, Conn)
            Conn.Open()
            List = controlla.ExecuteReader()
            If List.HasRows Then
                Label3.Text = "Numero promemoria per il giorno selezionato : " + List.RecordsAffected.ToString
                ListBox1.Items.Clear()
                Do While List.Read
                    ListBox1.Items.Add(List.GetValue(0).ToString())
                    MessageBox.Show(List.GetValue(0).ToString())
                Loop
            Else
                ListBox1.Items.Clear()
                Label3.Text = "Nessun promemoria presente per il giorno selezionato"
            End If
            List.Close()
            Conn.Close()
        End Sub
    Continuo a non capire perchè prima facesse il duplicato, ed anche se adesso non lo fa più sarei curioso di sapere il perchè, per evitare di ripetere l'errore in futuro

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.