29/03/11 10:11
Angelus
Salve io vorrei esaminare un record alla volta per verificare se corrisponse ad un criterio di ricerca, il problema è che non mi serve nel suo complesso come cercare un nome e visualizzare il record ma bensì se il primo record corrisponde a X allora nella variabile contatore diverrà +1 se corrisponde a Z il contatoreXmax diverrà 0 e contatore Zmax +1 piccolo es.
X 1
X 2
X 3
Z 1
Z 2
X 1
X 2 < 3 = 3
Z 1 < 2 = 2
in questo caso il contatore Xmax sarà 3 perchè e il numero consecutivo maggiore e Zmax sarà 2
qual'è il comando che mi permette di eseguire questo spostamento nei record?
Grazie in anticipo per i suggerimenti.
aaa
29/03/11 11:19
poeo85
scusa ma alla fine questo è un problema di query...
se ti tiri fuori solo i massimi?????
es:
select max(x)
from tabella
Ultima modifica effettuata da poeo85 29/03/11 11:31
aaa
29/03/11 12:59
Aangelus
Scusami se non mi sono espresso in maniera chiara, volevo intendere che
la variabile contatoreXmax non sta nel database, ma dovrebbe essere un frutto
dell'esaminazione di ogni record che vb troverà
nel database sta solo
X
X
X
Z
Z
X
X
Z
ho sempre lavorato con open "nomefile" for append as #1 adesso vorrei passare a lavorare con i database dato che sono più veloci e più affidabili ed il vecchio costrutto era
Esempio:
for a = 0 to 100
get #1, a , nomefile
if nomearrey(a).lettera = X then
contatorez = 0
contatorex = contatorex + 1
if contatore > contatorexmax then
contatorexmax = contatore
end if
end if
e lo stesso procedimento con la lettera Z spero di essermi espresso in maniera chiara
Ultima modifica effettuata da Aangelus 29/03/11 13:21
aaa
30/03/11 7:14
poeo85
ok...per cui stai iniziando a lavorare con i dabase
allora
per lavorare con i database
devi prima dichiarare
private Cn As New ADODB.Connection
private Rs As New ADODB.Recordset
' se ti servono privati o pubblici non so che devi fare
poi fare la connessione
Private Sub cmd_Connessione_Click()
'Set db = New ADODB.Connection
If Cn.State > 0 Then
Call writeList(lst_Operazioni, "Connessione già attiva." & vbCrLf & "Prima Disconnettere.")
Else
On Error GoTo lbl_Error
With Cn
.ConnectionString = "Provider = Microsoft.Jet.OleDB.4.0;" & _
"Data source = " & App.Path & "\" & NomeDatabase & ".mdb"
'nella prima riga si specifica il provider
'nella seconda il percorso al db
.ConnectionTimeout = 5 'numero dei secondi di timeout
.CursorLocation = adUseClient 'tipo di cursore
.Mode = adModeShareDenyNone 'nessuna limitazione
.Open 'apertura ricordarsi di chiuderla
End With
With Rs
.ActiveConnection = Cn ' imposta a che connessione si riferisce
.LockType = adLockOptimistic ' imposta il tipo di lock
End With
gb_ConnectDB = True
End If
end sub
Exit Sub
lbl_Error:
'fai la gestione dell'errore...
e poi fare dove serve
Sql = "Select max nomecampo from tabella"
Set rs = OpenRecordset(Sql)
If Not (rs.EOF And rs.BOF) Then
'quando trova qualcosa
'quando devi ciclare il record per esempio in una query select * from trabella fai
Do While Not rs.EOF
list1.additem rs!nomeCampo1
list2.additem rs!nomeCampo2
list3.additem rs!nomeCampo3
rs.movenext
loop
Else
'se non trova niente ma facendo il massimo al massimo hai 0
End If
rs.Close
Set rs = Nothing
spero di esserti stato d'aiuto con questi esempi di codice....se hai problemi chiedi
spero anche che non ci siano errori di codice....
Ultima modifica effettuata da poeo85 30/03/11 7:21
aaa
30/03/11 13:03
poeo85
tranquillo non prendere paura...
alla fine fai una volta le funzioni poi usi sempre quelle...
poi quando impari a usari i database fidati che è molto meglio...
aaa
03/04/11 17:23
Aangelus
Ciao premettendo che sto trovando altri manuali per i database (cosa molto complicata per compatibilità tra vb6 e vista) il punto preciso nel codice precedente postato da poeon che lavora con le singole celle delle tabelle
es:
dati.nome = Angelo
dati.cognome = Rossi
dati.città = Taranto
ecc.
quindi se io voglio lavorare con i singoli dati di ogni tabella per ogni riga come si fa con un array come faccio, anche perchè il problema non è visualizzare il contenuto ma passare i dati ad una variabile per fargli eseguire dei calcoli ?
Ciao a tutti
aaa