Newsgroup: it.comp.lang.visual-basic
Titolo: RowColChange

Visual Basic sempra essere nuovamente impazzito.
Ecco cosa succede, cercherò di essere quanto più chiaro è possibile.
Questo è quello che dovrebbe accadere normalmente
FormLoad:
Una ComboList si riempie con alcuni codici clienti.
Clic sulla ComboList:
la DataGrid1 si popola con i dati del cliente (in questo caso sono ordini)
Clic su una riga della DataGrid1:
la DataGrid2 si popola con i dettagli dell'ordine (gli articoli ordinati).
Invece ecco che succede:
Clic sulla ComboList:
la DataGrid1 si popola con i dati del cliente (in questo caso sono ordini)
la DataGrid2 si popola con i dettagli dell'ordine (gli articoli ordinati).
Naturalmente in questo caso si genera un'errore in quanto non ci sono dati
da esaminare.
In parole più semplici è come se il programma non riconoscesse l'End Sub
della ComboList etc
Per quanto riguarda il passaggio dei dati da una routine all'altra ho usato:
Private Sub Combo1_Click()
On Error Resume Next
  Dim conn2 As New ADODB.Connection
  Dim rsTemp2 As New ADODB.Recordset
  conn2.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source= clienti.mdb"
  stringa = "select * from Cliente" & codicecliente & "'"
  rsTemp2.Open stringa, conn2, adOpenStatic
  Text1.Text = rsTemp2!RagioneSociale
  Text2.Text = rsTemp2!piva
  Text3.Text = rsTemp2!via
  Text4.Text = rsTemp2!NumeroCivico
  Text5.Text = rsTemp2!cap
  Text6.Text = rsTemp2!citta
  Text7.Text = rsTemp2!provincia
  conn2.Close
  Dim Db As Connection
  Set Db = New Connection
  Db.CursorLocation = adUseClient
  Db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=" + App.Path &
"\ordini.mdb;"
  Set DBGriglia = New Recordset
  stringa = "select * from ElencoOrdini where CodiceClienteOrdinante='" &
codicecliente & "'"
  DBGriglia.Open stringa, Db, adOpenStatic, adLockOptimistic
  Set DataGrid1.DataSource = DBGriglia
  DataGrid1.Refresh
  mbDataChanged = False
End Sub
Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As
Integer)
....
....
....
End Sub
Quest'ultima routine dovrebbe entrare in funzione nel momento in cui si fa
clic su una riga della DataGrid1... almeno così succede nelle altri parti
del mio programma dove uso la stessa cosa.. ma qui invece no. Si carica
immediatamente dopo la routine Combo1_Click
Che succede?
io non riesco a spiegarmelo, voi?
Sapete aiutarmi?
Potrebbe essere la prorietà RowColChange che non va bene? Me ne suggerite
un'altra che fa al caso mio?
Grazie.

 End Sub
Ok?
Come ti sembra?
ciao
ugo

Si ok ma questo non risolve il mio problema
Il mio problema non è che qualcosa non funziona ma che finita la routine
combo1_click() il programma dovrebbe fermarsi attendendo un nuovo evento
(che è quello del rowcolchange sulla datagrid),
invece questo non succede, anzi, l'evento si genere automaticamente da solo
e la routine datagrid1_rowcolchange(....) va in funzione senza che nessuno
l'abbia chiamata in causa dopo il popolamento della datagrid con i dati del
db!!!!
E vorrei semplicemente capire il perchè. E come risolvere il problema!



Col codice che ti ho postato dovrebbe essere eseguita correttamente senza
errori.
Se vuoi evitare totalmente che venga eseguito, non l'evento,
ma il codice che ci hai scritto, aggiungi una boolean visibile a livello di
form che
imposti durante il caricamnto dei recordset e che resetti alla fine della
combo_click
(e che naturalmente testi nella rowcolchange)
ciao
ugo