Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Ricerca con database
Forum - Visual Basic 6 - Ricerca con database

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Angelus (Normal User)
Newbie


Messaggi: 8
Iscritto: 29/01/2011

Segnala al moderatore
Postato alle 12:11
Martedì, 29/03/2011
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.

PM
Avatar
poeo85 (Normal User)
Pro


Messaggi: 104
Iscritto: 27/01/2010

Up
2
Down
V
Segnala al moderatore
Postato alle 9:27
Lunedì, 04/04/2011
allora lavorare con i database è  "come" lavorare con un array, cioè quanto ti sei aperto un recordset hai tutti i risultati della tua query dentro la variabile recordset che ti sei dichiarato.

esempio:

Codice sorgente - presumibilmente VB.NET

  1. dim rs as recorset
  2. dim sql as string
  3. sql = "select campo1, campo2, campo3 from tabella"
  4. Set rs = OpenRecordset(Sql)
  5.             If Not (rs.EOF And rs.BOF) Then                  
  6.                      Do While Not rs.EOF
  7.                            list1.additem rs!nomeCampo1
  8.                            list2.additem rs!nomeCampo2
  9.                            list3.additem rs!nomeCampo3
  10.                            rs.movenext
  11.                      loop
  12.            End If
  13.            rs.Close
  14.            Set rs = Nothing


come puoi vedere scorri il recorset come fosse un array
è l'equivalente di do while i< ubound(array)

il recorset (è un array di un type non so se conosci) alla fine non è che un array

PM
Avatar
poeo85 (Normal User)
Pro


Messaggi: 104
Iscritto: 27/01/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 9:14
Mercoledì, 30/03/2011
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

Codice sorgente - presumibilmente VB.NET

  1. Private Sub cmd_Connessione_Click()
  2. 'Set db = New ADODB.Connection
  3. If Cn.State > 0 Then
  4.     Call writeList(lst_Operazioni, "Connessione già attiva." & vbCrLf & "Prima Disconnettere.")
  5. Else
  6.     On Error GoTo lbl_Error
  7.        With Cn
  8.           .ConnectionString = "Provider = Microsoft.Jet.OleDB.4.0;" & _
  9.                               "Data source = " & App.Path & "\" & NomeDatabase & ".mdb"
  10.                               'nella prima riga si specifica il provider
  11.                               'nella seconda il percorso al db
  12.           .ConnectionTimeout = 5 'numero dei secondi di timeout
  13.           .CursorLocation = adUseClient 'tipo di cursore
  14.           .Mode = adModeShareDenyNone 'nessuna limitazione
  15.           .Open 'apertura ricordarsi di chiuderla
  16.        End With
  17.        With Rs
  18.           .ActiveConnection = Cn ' imposta a che connessione si riferisce
  19.           .LockType = adLockOptimistic ' imposta il tipo di lock
  20.        End With
  21.     gb_ConnectDB = True
  22. End If
  23. end sub
  24. Exit Sub
  25. lbl_Error:
  26.     'fai la gestione dell'errore...



e poi fare dove serve
Codice sorgente - presumibilmente Delphi

  1. Sql = "Select max nomecampo from tabella"
  2.             Set rs = OpenRecordset(Sql)
  3.             If Not (rs.EOF And rs.BOF) Then                  
  4.                    'quando trova qualcosa
  5.                    'quando devi ciclare il record per esempio in una query select * from trabella fai
  6.                      Do While Not rs.EOF
  7.                            list1.additem rs!nomeCampo1
  8.                            list2.additem rs!nomeCampo2
  9.                            list3.additem rs!nomeCampo3
  10.                            rs.movenext
  11.                      loop
  12.             Else
  13.                    'se non trova niente ma facendo il massimo al massimo hai 0
  14.            End If
  15.            rs.Close
  16.            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.... :om:

Ultima modifica effettuata da poeo85 il 30/03/2011 alle 9:21
la stringa di connessione dipende dal tipo di database...cmq ti basta cercare su google e la trovi - poeo85 - 30/03/11 09:34
PM
Avatar
poeo85 (Normal User)
Pro


Messaggi: 104
Iscritto: 27/01/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 15:03
Mercoledì, 30/03/2011
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...

PM
Avatar
poeo85 (Normal User)
Pro


Messaggi: 104
Iscritto: 27/01/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 14:31
Venerdì, 08/04/2011
prova con il metodo move
Codice sorgente - presumibilmente Visual Basic 6

  1. dim rs as recondset
  2. rs.move




Sposta la posizione del record corrente in un oggetto Recordset.

Sintassi

setdirecord.Move righe, inizio

La sintassi del metodo Move è composta dalle parti descritte di seguito.

Parte    Descrizione
setdirecord    Variabile di oggetto che rappresenta l'oggetto Recordset la cui posizione di record corrente viene spostata.
righe    Valore di tipo Long con segno che specifica di quante righe verrà spostata la posizione. Se il valore di righe è maggiore di 0, la posizione viene spostata in avanti verso la fine del file. Se il valore di righe è minore di 0, la posizione viene spostata indietro verso l'inizio del file.
iniziosegnalibro    Opzionale. Valore di tipo Variant di sottotipo String, che identifica un segnalibro. Se si specifica iniziosegnalibro, lo spostamento inizia in relazione a questo segnalibro. Altrimenti, Move inizia dal record corrente.

fonte msdn - poeo85 - 08/04/11 14:33
PM
Avatar
poeo85 (Normal User)
Pro


Messaggi: 104
Iscritto: 27/01/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 13:19
Martedì, 29/03/2011
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 il 29/03/2011 alle 13:31
PM
Avatar
Aangelus (Normal User)
Pro


Messaggi: 143
Iscritto: 29/03/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 14:59
Martedì, 29/03/2011
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 il 29/03/2011 alle 15:21
Vorrei trasformare il seguente codice - Aangelus - 29/03/11 15:09
PM
Avatar
Aangelus (Normal User)
Pro


Messaggi: 143
Iscritto: 29/03/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 14:12
Mercoledì, 30/03/2011
Ciao poeo e a tutta la comunità sto leggendo adesso il tuo post e la prima considerazione che mi viene in mente e che >>forse mi conviene tornare al costrutto OPEN << scherzi a parte ma serve tanto codice per i database :om:
ho studiato le varie connessioni ricerche ma non trovavo quello che mi serviva comunque ti ringrazio di cuore per la cortesia adesso cercherò di adattarlo alle mie esigenze e ti faccio sapere
                                             CIAO!!!!!

PM
Avatar
Aangelus (Normal User)
Pro


Messaggi: 143
Iscritto: 29/03/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 19:23
Domenica, 03/04/2011
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

PM
Pagine: [ 1 2 ] Precedente | Prossimo