Gambas-it

Gambas3 => Programmazione => Topic aperto da: dex - 14 Aprile 2020, 12:42:48

Titolo: [Risolto] Caricare Record nelle combo
Inserito da: dex - 14 Aprile 2020, 12:42:48
Ciao Raga

devo caricare dei dati nelle combo
Codice: [Seleziona]
sqlp = "select * from clienti order by id"
          MyRG = MODMain.MyConn.Exec(sqlp)
   
   MyRG.MoveFirst
     
   For ig = 1 To MyRG.Count
     
       Combobox1.add( MyRG!citta)
       
       Combobox2.add( MyRG!regione)

       Combobox3.add( MyRG!nazione)

      MyRG.MoveNext
   Next

come faccio ad evitare dati ripetuti, esempio nella combo1 se come citta ha gia caricato roma, quando trova un nuovo record con citta roma non deve ricaricarlo
dato che le combo sono 8 vorrei evitare un ciclo di controllo per ogni combo per vedere se il dato è già caricato.
esiste un modo più semplice per evitare i cicli?
Titolo: Re:Caricare Record nelle combo
Inserito da: Gianluigi - 14 Aprile 2020, 13:00:10
Forse non ho capito, ma non puoi usare SELECT DISTINCT valore che non voglio ripetuto, altro valore che non voglio ripetuto, ecc?

Non ho mai provato se funziona anche con * ...
Titolo: Re:Caricare Record nelle combo
Inserito da: dex - 14 Aprile 2020, 13:26:27
stavo valutando find
Ora provo fra FINd e DISTINCT quale risponde meglio alle mie esigenze
Titolo: Re:Caricare Record nelle combo
Inserito da: dex - 15 Aprile 2020, 22:25:47
Aggiornamento

alla fine ho optato per la query con DISTINCT.
dalle prove che ho fatto FIND era più veloce e con meno codice, ma, pensando alla lunga nel caso che il database si dovesse riempire con molti MB di dati, FIND avrebbe potuto rallentare il sistema.
Titolo: Re:Caricare Record nelle combo
Inserito da: naderit - 15 Aprile 2020, 22:28:01
Ciao ero interessato alla soluzione e seguendo le indicazioni di Gianluigi si può risolvere in questo modo:
Codice: [Seleziona]
Dim MyRS As Result
Dim sql As String
  ComboBox1.Clear 

           sql = "SELECT DISTINCT nome FROM rubrica ORDER BY nome ASC"
           MyRS = MODMain.$conn.Exec(sql)
   
          If MyRS.Available = True Then   
       
                For Each MyRS                                 
                 
                  ComboBox1.Add(MyRS!nome)
                 
                Next
          Else                               
             
                  ComboBox1.Text = "Nessun dato"
          Endif
  Catch 
  Message.Error(Error.Text)   


ho utilizzato sql come database.
ciao
Titolo: Re:[Risolto] Caricare Record nelle combo
Inserito da: dex - 15 Aprile 2020, 22:47:54
Ciao Naderit
si è la stessa soluzione che ho adottato io.