Newsgroup: it.comp.lang.visual-basic
Titolo: Condizioni if che non vanno

Dunque ho un codice di questo tipo (per favore, lo so che è fatto coi piedi,
ma ci sto sbattendo la testa giorno dopo giorno per migliorare, non
infierite):
cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & mydir &
"\miodb.mdb"
rs.Open "SELECT GioDiA.Giornata AS GtA From GioDiA WHERE
(((GioDiA.Giocata)=True))", cn, 1
While rs.EOF = False
lcont = rs("GtA").Value
rs.MoveNext
Wend
rs.Close
 rs.Open "SELECT ...
 While rs.EOF = False
 Open "Risultati" & rs("gio").Value & ".tab" For Append As #1
Print #1, Chr(9) & Chr(9); rs("FsnC").Value & Chr(9) & Chr(9) & Chr(9) &
Chr(9) & Chr(9) & Chr(9) & rs("FsnF").Value
Close #1
cn2.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & mydir &
"\miodb2.mdb"
rs2.Open "SELECT ...
'QUI HO IL PROBLEMA PRATICAMENTE NON MI FUNZIONA LA CONDIZIONE AND SPIEGO
ALLA FINE
While rs2.EOF = False
If rs2("fsnome").Value = rs("FsnC").Value And rs2("gi").Value =
rs("gio").Value Then
Open "Risultati" & rs("gio").Value & ".tab" For Append As #1
Print #1, rs2("ruolo").Value & Chr(9) & rs2("nome").Value & Chr(9) &
rs2("voto").
rs2.MoveNext
Close #1
 Else
rs2.MoveNext
End If
Wend
rs2.Close
cn2.Close
DoEvents
rs.MoveNext
Wend
rs.Close
cn.Close
'****************************************
Nel punto in cui ho indicato il problema praticamente non funziona la
condizione IF AND, cioè io vorrei passare le stringhe alla stampa solo se le
2 condizioni si verifica, ma non va. Scritto come riportato sopra, il ciclo
IF viene bypassato con ELSE. Se tolgo la parte "And rs2("gi").Value =
rs("gio").Value" il ciclo IF funziona correttamente.
Dove sto sbagliando?

 rs("gio").Value Then
....STRAZAC....
senti ma hai l'artrosi alle dita???
oppure...
lavori per la settimana enigmistica???
perchè non scrivi qualcosa in più....pensa se fra un mese lo devi
modificare!
O qualcuno in vece tua (pensa sempre in prospettiva)!!!
Problemi
per confrontare qualcosa deve essere omogeneo...non comparo pere e bulloni!
per far ciò devo anche controllare prima di testare!!!
se io scrivo
dim Nome as string
dim Dato1 as string
'su questi non so se son stringhe numero o date/time...
dim Giorno as string
dim Giorno2 as string
Nome= trim(Rs2("Fsnome") & "")
Dato1=trim(rs("FsnC") &"")
Giorno=trim(Rs2("Gi") & "")
Giorno2=trim(Rs("Gio")& "")
ora tutto diventa
if (nome=dato1) AND (Giorno=Giorno2) THEN
il problema forse ti rimane ma almeno è più chiaro
Perchè non soddisfa mai l'IF?
a) Non sono i dati uguali "gio"="WED"  non sono uguali
b) Non leggi il record o non hai inserito il record
    if ("A"="a") AND ("LUN"="") THEN
    fallisce !!!
controlla bene questo schema visto che usi 2 recordset:
Apro rs1
Apro rs2
Controllo con BOF ed EOF che non siano vuoti se son vuoti esco dalla sub
mi sposto al primo recordset di entrambi
CICLO1
    leggo i dati di rs1
    controllo che non siano nulli se son nulli avverto ed è inutile fare il
test
    CICLO 2
    Leggo i dati di rs2
    controllo che non siano nulli se son nulli avverto ed è inutile fare il
test
    ESEGUO IL TEST
    End ciclo2
End ciclo1
Chiudo le connessioni
questo senza stare ad entrare nel merito della logica del tuo programma!
Se devo entrare nella logica ti dico....
ma che cosa vuoi fare?
comparare 2 recordset?
Ma li fai battere in pari???
ossia leggere il rs1 e leggere rs2 dovrà corrispondere ad un criterio?
ossia il record 20 di rs2 non è detto che corrisponda al 20esimo di rs2
a meno che tu non le leghi da un campo chiave e da una relazione
ma allora se vuoi tutti i record di tabella a e b che abbiano il campo
Giorno e Nome uguale
perchè non lo fai con una "UNA"( ho detto una!!!) query sql e cicli sul
recordset generato???
perchè tutta questa inutile fatica???

 rs("gio").Value Then
[...CUT...]
Ciao. Magari non serve, ma hai provato a fare
If (rs2("fsnome").Value = rs("FsnC").Value) And (rs2("gi").Value =
rs("gio").Value) Then ....
o, addirittura
If ((rs2("fsnome").Value = rs("FsnC").Value) And (rs2("gi").Value =
rs("gio").Value)) Then ....
cioč racchiudere i due confronti, o l'intera condizione AND, tra parentesi?
Se non va nemmeno cosě, puoi provare a dichiarare due variabili booleane,
assegnare il loro valore sulle due condizioni, e poi fare ... If (cond1 And
cond2) Then ...
Spero che ti sia di aiuto. Ciao
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ha scritto:
[...CUT...]
...cavolo, wodka, alle otto del mattino hai tutta questa pazienza? Chi č che
te la fa perdere durante la giornata?


 perchè tutta questa inutile fatica???
Perchè non lo so fare e faccio quello che posso con quello (per ora poco)
che conosco e che sto imparando.
Grazie dell'aiuto.

> sul recordset generato???
possibilissimo
basta studiare l'SQL!
http://www.google.it/search?hl=it&q=tutorial+sql&meta=lr%3Dlang_it

 te la fa perdere durante la giornata?
l'omino da cui devo andare alle 10 per convincerlo a fare il dps!!!

Ok, ho risolto... spero che il coraggio di postare la soluzione e la
figuraccia possa evitare almeno qualche insulto nei miei confronti... ;-)
insomma ...stavo confrontando "pere e bulloni". :-(
Unica scusante... i nomi dei due campi per esteso (non in formato
enigmistico) erano NomeGiornale_1 e NomeGiornale_2, adesso ditemi voi
se uno, leggendo il nome del campo "NomeGiornale_1" può immaginare di
trovarsi dentro un numero...
Comunque grazie.