ACCESS e VBA: scorrere le righe e le colonne di una tabella?

GraceHawk

Nuovo Utente
17 Set 2018
5
0
1
Gentili utenti, come accennato nel messaggio di presentazione, sto approcciando per la prima volta al mondo dei database e al vba per questioni di "forza maggiore" e da autodidatta.

Ancor prima di entrare nel dettaglio del database di cui mi sto occupando, avrei una domanda da fare:
attraverso VBA è possibile scorrere le righe di una tabella, ovvero i campi della stessa, fissata la colonna (record)?

Per quanto riguarda i record invece, ho trovato già qualche info in merito alla possibilità di scorrerli tutti, ma sarei comunque grata a chi mi potesse, in maniera sintetica, fornire informazioni sulle diverse modalità di "scorrimento" dei record (ciclo for, do until loop, etc...)

Grazie mille :)
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
ti riporto un esempio di script VBA usato in excel con accesso ad un db (nel caso specifico oracle)
ma che diventa di tipo generico usando il file udl per la connessione
Codice:
    Set tdb = CreateObject("ADODB.Connection")
    tdb.connectionstring = "file name=" & UdlFile & "NomeDelDatabase.udl;"  'WINDOWS ! ho definito i parametri del db in un file udl
    tdb.Open

    sqlquery = "select col1, col2, ........"

    Set rsuserlist = tdb.Execute(sqlquery)  'esegue la query creando il cursore rsuserlist per la lettura del risultato

    Do While Not rsuserlist.EOF

        col_1 = Trim(rsuserlist(1))  'ma si può usare anche il nome della colonna
        col_2 = Trim(rsuserlist(2))

        Call Element_key

        w1 = w1 + 1

        Cells(w1, 1) = col_1
        Cells(w1, 2) = col_2

        For w2 = 1 To 12
            If LastUpdDateFlg >= w2 Then
                Cells(w1, w2 + 2) = CDbl(rsuserlist(w2 + 2)) / 1000  'la colonna può essere anche "calcolata" vedi w2 + 2
            Else
                Cells(w1, w2 + 2) = 0
            End If
        Next

        rsuserlist.movenext  'avanza di un record
    Loop

    Range("A2").Select

se lavori in ambiente windows,
crea un file con estensione txt (tasto dx del mouse)
poi rinominalo con estensione udl
doppio click su di esso e ti si apre il mondo per la connessione al db con tanto di verifica ….
 
  • Like
Reactions: GraceHawk

GraceHawk

Nuovo Utente
17 Set 2018
5
0
1
ti riporto un esempio di script VBA usato in excel con accesso ad un db (nel caso specifico oracle)
ma che diventa di tipo generico usando il file udl per la connessione
Codice:
    Set tdb = CreateObject("ADODB.Connection")
    tdb.connectionstring = "file name=" & UdlFile & "NomeDelDatabase.udl;"  'WINDOWS ! ho definito i parametri del db in un file udl
    tdb.Open

    sqlquery = "select col1, col2, ........"

    Set rsuserlist = tdb.Execute(sqlquery)  'esegue la query creando il cursore rsuserlist per la lettura del risultato

    Do While Not rsuserlist.EOF

        col_1 = Trim(rsuserlist(1))  'ma si può usare anche il nome della colonna
        col_2 = Trim(rsuserlist(2))

        Call Element_key

        w1 = w1 + 1

        Cells(w1, 1) = col_1
        Cells(w1, 2) = col_2

        For w2 = 1 To 12
            If LastUpdDateFlg >= w2 Then
                Cells(w1, w2 + 2) = CDbl(rsuserlist(w2 + 2)) / 1000  'la colonna può essere anche "calcolata" vedi w2 + 2
            Else
                Cells(w1, w2 + 2) = 0
            End If
        Next

        rsuserlist.movenext  'avanza di un record
    Loop

    Range("A2").Select

se lavori in ambiente windows,
crea un file con estensione txt (tasto dx del mouse)
poi rinominalo con estensione udl
doppio click su di esso e ti si apre il mondo per la connessione al db con tanto di verifica ….
ti riporto un esempio di script VBA usato in excel con accesso ad un db (nel caso specifico oracle)
ma che diventa di tipo generico usando il file udl per la connessione
Codice:
    Set tdb = CreateObject("ADODB.Connection")
    tdb.connectionstring = "file name=" & UdlFile & "NomeDelDatabase.udl;"  'WINDOWS ! ho definito i parametri del db in un file udl
    tdb.Open

    sqlquery = "select col1, col2, ........"

    Set rsuserlist = tdb.Execute(sqlquery)  'esegue la query creando il cursore rsuserlist per la lettura del risultato

    Do While Not rsuserlist.EOF

        col_1 = Trim(rsuserlist(1))  'ma si può usare anche il nome della colonna
        col_2 = Trim(rsuserlist(2))

        Call Element_key

        w1 = w1 + 1

        Cells(w1, 1) = col_1
        Cells(w1, 2) = col_2

        For w2 = 1 To 12
            If LastUpdDateFlg >= w2 Then
                Cells(w1, w2 + 2) = CDbl(rsuserlist(w2 + 2)) / 1000  'la colonna può essere anche "calcolata" vedi w2 + 2
            Else
                Cells(w1, w2 + 2) = 0
            End If
        Next

        rsuserlist.movenext  'avanza di un record
    Loop

    Range("A2").Select

se lavori in ambiente windows,
crea un file con estensione txt (tasto dx del mouse)
poi rinominalo con estensione udl
doppio click su di esso e ti si apre il mondo per la connessione al db con tanto di verifica ….

Grazie per la risposta, ma non riesco a seguire tutti i passaggi :(
Che cosa fa questo codice? Tutta la parte inerente a rinominare con un'altra estensione a che serve?
Perdona l'ignoranza!
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
il codice che ti ho postato é un esempio di apertura del data base,
esecuzione di una select
lettura dei record restituiti
all'interno ho lasciato alcune istruzioni per vedere come usare i valori delle colonne restituiti

la parte del file udl, serve, in ambiente windows, a creare un file di collegamento al db, che può essere usato nello script vba
nello script rende immediata la gestione della connessione
Codice:
tdb.connectionstring = "file name=" & UdlFilePath & "NomeDelDatabase.udl;"
tdb.Open
ti invito a provare per capire di cosa si tratta ...
 
  • Like
Reactions: GraceHawk
Discussioni simili
Autore Titolo Forum Risposte Data
F Modificare report di etichette di access con vba MS Access 0
Spenalzo Creare tabelle multiple con Access via VBA MS Access 2
F [MS Access] VBA non funziona più MS Access 2
A Access, creare nuova tabella in DB esterno con VBA Visual Basic 0
G Access in VBA - Come si fa a modificare testo nel'intestazione di file Word MS Access 0
L VBA Access Numero si azzera con dmax Database 0
F access ricerca record con apostrofo. MS Access 0
P Access: recuperare Indice dopo un insert into MS Access 0
N Access: Filtro su maschera MS Access 0
B Non riesco a trovare i cognomi con i caratteri speciali in Access (Microsoft 365) MS Access 0
N Errore interno Access MS Access 2
C ACCESS Aprire maschera se valore non presente in una combo MS Access 7
L Access Periodo maschera continua MS Access 4
B Aumento dimensioni grafico Access Database 0
R [C#] Quali dipendenze occorrono su progetto "Setup" con Access Database? .NET Framework 1
G Appicazione HTML per inserimento dai in Database Access Microsoft HTML e CSS 0
K mc Access/phpmyamin MS Access 0
L Collegare un form html ad un database access Javascript 2
R salve a tutti sono un insegnante di pianoforte e a tempo perso mi sto dedicando ad access Presentati al Forum 1
G Access point con rete guest, consigli? Reti LAN e Wireless 0
P Access Inserimento data. MS Access 4
ges Microsoft ACCESS oltre ogni limite (tre manuali) Altri Annunci 2
@ [MS Access] Funzione Iif..is null... Database 0
P [MS Access] Sostituire un carattere in tutta la tabella MS Access 11
B tasti rapidi Access MS Access 1
M [MS Access] Pulsante su maschera che esegue azioni su altra maschera MS Access 3
C [MS Access] Pagina di dialogo con allegati MS Access 1
strambotto [MS Access] Smembramento tabella MS Access 5
D [MS Access] Piu' maschere con una sola tabella dati... MS Access 0
G [MS Access] Funzione ARROTONDA non definita nell'espressione MS Access 1
M [MS Access] Relazione tra maschere MS Access 1
G Access Point POE da esterno Reti LAN e Wireless 0
M [MS Access] controllo valido se MS Access 8
N [MS Access] Come relazionare DB Libri trasposti in Film e viceversa MS Access 1
S [ASP] SALVARE VALORE SELECT OPTION SU CAMPO TABELLA ACCESS Classic ASP 9
D [MS Access] MS Access 2
S [MS Access] Apertura Maschera su nuov record in base a determinato ID MS Access 0
maria_ia Microsoft Access Windows e Software 0
S [MS Access] Apertura maschera MS Access 3
S [MS Access] trasformare un numero in lettere in un report MS Access 1
D [Visual Basic] [MS Access] query con parametro di testo Visual Basic 4
T mysql tutorial per importare tabelle access in mysql aiuto MySQL 2
P [MS ACCESS] Estrarre più somme da una query MS Access 4
D [MS Access] problemi con inserimento campo in una maschera MS Access 6
F [MS Access] Creare [stringa] da caselle combinate MS Access 0
D [MS Access] aiuto non riesco a capire MS Access 6
Arcadia [MS Access] Focus su campo specifico MS Access 1
akira [MS Access] Apertura recordset MS Access 1
V access 2007, maschera con caselle di selezione Programmazione 4
W [MS Access] Barre di scorrimento su maschere MS Access 0

Discussioni simili