PDA

View Full Version : Access e Visual Basic !!!!!!


leon84
22-01-2003, 16:32
Ho creato un database con tabelle e query in access . La mia intenzione è quella di poter utilizzare il database creato senza l'utilizzo di Access creando un file eseguibile . Nella sezione "Problemi Software" mi hanno detto che è possibile farlo utilizzando Visual Basic . mi è stato detto IN OLTRE che per fare questa operazione bisogna interfacciarsi alle ADO o DAO . Cosa sono e come lo si fà ? Grazie

leon84
02-02-2003, 17:01
Possibile che nessuno sa niente ?

StefanoCsl
03-02-2003, 10:59
Sono sempre io ;)

Questo è un esempio di stringa di connessione da usare in ADO:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NOME_FILE;Mode=ReadWrite;Persist Security Info=False

In questo caso ho usato una connessione Jet 4.0, al posto di nome file devi mettere il percorso completo del DB di Access. "Mode" è il modo di accesso al DB (in questo caso lettura e scrittura).
Se hai il componente VB "Microsoft ADO Data Control 6.0" (forse anche le versioni precedenti) tutto è + semplice perché lo puoi usare per creare la stringa di connessione, credo che questo componente sia presente nel Service Pack 4 del Visual Basic che, se non sbaglio, non hai (e ti consiglio di prendere gratuitamente dal sito Microsoft).

Cmq di norma per una connessione ADO si procede così:
1. Tra i riferimenti (Menu>Progetto>Riferimenti...) e selezionare la voce "Microsoft ActiveX Data Objects 2.5 Library".
2. Creare le seguenti variabili (se hai + form ti consiglio di metterle in un modulo a livello globale):
- Global Conn as new ADODB.Connection, variabile per gestire la connessione
- Global Rst as new ADODB.Recordset, variabile per gestire il recordset, ovvero i dati selezionati dal DB con una query
- Global Comm as new ADODB.Command, variabile per gestire il command, che personalmente uso molto poco ;)

Per aprire la connessione digitare così: Conn.Open seguito dalla stringa di connessione (ad esempio quella che ho scritto sopra), ti consiglio prima di aprire una connessione di controllare (ed eventualmente chiudere) possibili connessioni associate alla variabile, scrivendo così "If Conn.State <> 0 Then Conn.Close".
Dopo aver aperto la connessione se hai usato il Command lo devi associare ad una connessione (ad esempio questa), scrivendo così "Comm.ActiveConnection = Conn". Per creare una query SQL con il command scrivi "Comm.CommandText = StringaSQL".
Dopo aver creato la stringa SQL con il command la devi associare ad un RecordSet in modo che tutti i dati estratti vadano lì, scrivi così: "Rst.Open Comm, , TIPO_CONNESSIONE", dove tipo connessione è la modalità di apertura del recordset, mentre "Comm" è il command precedentemente caricato. Come per la connection anche il Recordset deve essere chiuso prima di poter essere aperto, quindi prima di ogni apertura scrivi così: "If Rst.State <> 0 Then Rst.Close".

NB: come ti ho detto prima non mi piace usare il command quindi le Query le eseguo così:
Dopo aver aperto la connessione per eseguire una query scrivo "Set Rst = Conn.Execute (StringaSQL)". Anche in questo caso devi prima ciudere l'oggetto "Rst".

Per eseguire istruzioni SQL di inserimento, cancellazione o modifica usa l'oggetto "Conn": Conn.Execute StringaSQL.

Se hai altre domande scrivi pure
Stefano

leon84
03-02-2003, 13:31
Originally posted by "StefanoCsl"

Sono sempre io ;)

Questo è un esempio di stringa di connessione da usare in ADO:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NOME_FILE;Mode=ReadWrite;Persist Security Info=False

In questo caso ho usato una connessione Jet 4.0, al posto di nome file devi mettere il percorso completo del DB di Access. "Mode" è il modo di accesso al DB (in questo caso lettura e scrittura).
Se hai il componente VB "Microsoft ADO Data Control 6.0" (forse anche le versioni precedenti) tutto è + semplice perché lo puoi usare per creare la stringa di connessione, credo che questo componente sia presente nel Service Pack 4 del Visual Basic che, se non sbaglio, non hai (e ti consiglio di prendere gratuitamente dal sito Microsoft).

Cmq di norma per una connessione ADO si procede così:
1. Tra i riferimenti (Menu>Progetto>Riferimenti...) e selezionare la voce "Microsoft ActiveX Data Objects 2.5 Library".
2. Creare le seguenti variabili (se hai + form ti consiglio di metterle in un modulo a livello globale):
- Global Conn as new ADODB.Connection, variabile per gestire la connessione
- Global Rst as new ADODB.Recordset, variabile per gestire il recordset, ovvero i dati selezionati dal DB con una query
- Global Comm as new ADODB.Command, variabile per gestire il command, che personalmente uso molto poco ;)

Per aprire la connessione digitare così: Conn.Open seguito dalla stringa di connessione (ad esempio quella che ho scritto sopra), ti consiglio prima di aprire una connessione di controllare (ed eventualmente chiudere) possibili connessioni associate alla variabile, scrivendo così "If Conn.State <> 0 Then Conn.Close".
Dopo aver aperto la connessione se hai usato il Command lo devi associare ad una connessione (ad esempio questa), scrivendo così "Comm.ActiveConnection = Conn". Per creare una query SQL con il command scrivi "Comm.CommandText = StringaSQL".
Dopo aver creato la stringa SQL con il command la devi associare ad un RecordSet in modo che tutti i dati estratti vadano lì, scrivi così: "Rst.Open Comm, , TIPO_CONNESSIONE", dove tipo connessione è la modalità di apertura del recordset, mentre "Comm" è il command precedentemente caricato. Come per la connection anche il Recordset deve essere chiuso prima di poter essere aperto, quindi prima di ogni apertura scrivi così: "If Rst.State <> 0 Then Rst.Close".

NB: come ti ho detto prima non mi piace usare il command quindi le Query le eseguo così:
Dopo aver aperto la connessione per eseguire una query scrivo "Set Rst = Conn.Execute (StringaSQL)". Anche in questo caso devi prima ciudere l'oggetto "Rst".

Per eseguire istruzioni SQL di inserimento, cancellazione o modifica usa l'oggetto "Conn": Conn.Execute StringaSQL.

Se hai altre domande scrivi pure
Stefano

Grazie tantissimo . In questi giorni provo e ti faccio sapere

leon84
03-02-2003, 16:14
Originally posted by "StefanoCsl"

Sono sempre io ;)

Questo è un esempio di stringa di connessione da usare in ADO:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NOME_FILE;Mode=ReadWrite;Persist Security Info=False

In questo caso ho usato una connessione Jet 4.0, al posto di nome file devi mettere il percorso completo del DB di Access. "Mode" è il modo di accesso al DB (in questo caso lettura e scrittura).
Se hai il componente VB "Microsoft ADO Data Control 6.0" (forse anche le versioni precedenti) tutto è + semplice perché lo puoi usare per creare la stringa di connessione, credo che questo componente sia presente nel Service Pack 4 del Visual Basic che, se non sbaglio, non hai (e ti consiglio di prendere gratuitamente dal sito Microsoft).

Cmq di norma per una connessione ADO si procede così:
1. Tra i riferimenti (Menu>Progetto>Riferimenti...) e selezionare la voce "Microsoft ActiveX Data Objects 2.5 Library".
2. Creare le seguenti variabili (se hai + form ti consiglio di metterle in un modulo a livello globale):
- Global Conn as new ADODB.Connection, variabile per gestire la connessione
- Global Rst as new ADODB.Recordset, variabile per gestire il recordset, ovvero i dati selezionati dal DB con una query
- Global Comm as new ADODB.Command, variabile per gestire il command, che personalmente uso molto poco ;)

Per aprire la connessione digitare così: Conn.Open seguito dalla stringa di connessione (ad esempio quella che ho scritto sopra), ti consiglio prima di aprire una connessione di controllare (ed eventualmente chiudere) possibili connessioni associate alla variabile, scrivendo così "If Conn.State <> 0 Then Conn.Close".
Dopo aver aperto la connessione se hai usato il Command lo devi associare ad una connessione (ad esempio questa), scrivendo così "Comm.ActiveConnection = Conn". Per creare una query SQL con il command scrivi "Comm.CommandText = StringaSQL".
Dopo aver creato la stringa SQL con il command la devi associare ad un RecordSet in modo che tutti i dati estratti vadano lì, scrivi così: "Rst.Open Comm, , TIPO_CONNESSIONE", dove tipo connessione è la modalità di apertura del recordset, mentre "Comm" è il command precedentemente caricato. Come per la connection anche il Recordset deve essere chiuso prima di poter essere aperto, quindi prima di ogni apertura scrivi così: "If Rst.State <> 0 Then Rst.Close".

NB: come ti ho detto prima non mi piace usare il command quindi le Query le eseguo così:
Dopo aver aperto la connessione per eseguire una query scrivo "Set Rst = Conn.Execute (StringaSQL)". Anche in questo caso devi prima ciudere l'oggetto "Rst".

Per eseguire istruzioni SQL di inserimento, cancellazione o modifica usa l'oggetto "Conn": Conn.Execute StringaSQL.

Se hai altre domande scrivi pure
Stefano

Ho controllato ed il primo componente che hai nominato ADO Data control 6.0 ce l'ho . Con quale di questi devo proseguire ?

leon84
03-02-2003, 16:16
Ti prego di elencarmi la strada più semplice

StefanoCsl
04-02-2003, 19:51
Questa è la strada per usare gli ADO, non si può fare in altro modo.
Altrimenti puoi usari i DAO che secondo me sono meno performanti (ma se non sbaglio occupano meno spazio quando crei il pacchetto di installazione).
Stefano

leon84
04-02-2003, 19:55
Originally posted by "StefanoCsl"

Questa è la strada per usare gli ADO, non si può fare in altro modo.
Altrimenti puoi usari i DAO che secondo me sono meno performanti (ma se non sbaglio occupano meno spazio quando crei il pacchetto di installazione).
Stefano

Quindi con gli ADO oltre ad avere quella libreria che mi dicevi devo fare anche tutto quel procedimento ?

StefanoCsl
04-02-2003, 19:59
Che dirti?! Io li uso così, non mi piacciono le istruzioni di VB per gestire tabelle. Preferisco comporre da solo la query SQL da utilizzare anche perché spesso mi si richiede di fare ricerche parametrizzate e con i DAO sarebbe molto + difficile

cmq anche con i DAO ti devi importare una libreria (sempre dalla stessa lista), la riconosci perché è scritto chiaramente DAO.

Ora non mi ricordo bene le istruzioni per leggere e modificare le tabelle, non li uso da moltissimo

leon84
04-02-2003, 20:02
Originally posted by "StefanoCsl"

Che dirti?! Io li uso così, non mi piacciono le istruzioni di VB per gestire tabelle. Preferisco comporre da solo la query SQL da utilizzare anche perché spesso mi si richiede di fare ricerche parametrizzate e con i DAO sarebbe molto + difficile

cmq anche con i DAO ti devi importare una libreria (sempre dalla stessa lista), la riconosci perché è scritto chiaramente DAO.

Ora non mi ricordo bene le istruzioni per leggere e modificare le tabelle, non li uso da moltissimo

Scusa una domanda . Il mio obbiettivo a parte VB era quello di creare una query ed un database con Access e renderlo eseguibile . A questo punto ho pensato ad Access e VB , ma solo per rendere la query eseguibile senza la necessità dello stesso Access . Se però esiste un altro metodo dimmelo che faccio prima

StefanoCsl
04-02-2003, 21:12
Io lavoro in VB da ormai 3 anni, quindi è il solo modo che conosco. Ora ti faccio una domanda: conosci abbastanza bene VB da fare un programma che gestisca Access?

Se non sbaglio un modo per creare un DB access autoeseguibile c'è, ma non so come fare. Io non uso molto accesso, al massimo creo le tabelle che poi uso in VB

leon84
05-02-2003, 13:31
Originally posted by "StefanoCsl"

Io lavoro in VB da ormai 3 anni, quindi è il solo modo che conosco. Ora ti faccio una domanda: conosci abbastanza bene VB da fare un programma che gestisca Access?

Se non sbaglio un modo per creare un DB access autoeseguibile c'è, ma non so come fare. Io non uso molto accesso, al massimo creo le tabelle che poi uso in VB


AH capisco . Quindi per rendere eseguibile un progetto access devo per forza utilizzare VB . Ma utilizzando VB con il metodo che mi hai elencato , anche le query vengono riportate in VB ?

StefanoCsl
05-02-2003, 14:11
AH capisco . Quindi per rendere eseguibile un progetto access devo per forza utilizzare VB . Ma utilizzando VB con il metodo che mi hai elencato , anche le query vengono riportate in VB ?
Che vuoi dire? :confused:

Se lo gestisci in VB, Access non ti servirà più, puoi anche installare il programma (nota che parlo di programma e non di DB Access o MDB) in un computer dove non è installato Access perché le librerie le porta dietro il pacchetto di installazione di Visual Basic. Non capisco che intendi con "... anche le query vengono riportate in VB?". Ovviamente dopo gestirai l'intero DB (query di inserimento, modifica, cancellazione e selezione incluse) con VB. In pratica Access ti serve solo per creare il DB e le tabelle (che per assurdo puoi creare anche con VB stesso), dopodiché lo puoi anche cancellare ;) perché il resto lo farai in VB.

Ora vorrei farti una domanda: che ci devi fare?! Forse capendo le tue intenzioni posso aiutarti meglio. Non capisco l'utilità di gestire un DB con Access che graficamente è nettamente inferiore a VB, per non parlare della gestione stessa delle tabelle.

Stefano

leon84
05-02-2003, 14:21
Originally posted by "StefanoCsl"


Che vuoi dire? :confused:

Se lo gestisci in VB, Access non ti servirà più, puoi anche installare il programma (nota che parlo di programma e non di DB Access o MDB) in un computer dove non è installato Access perché le librerie le porta dietro il pacchetto di installazione di Visual Basic. Non capisco che intendi con "... anche le query vengono riportate in VB?". Ovviamente dopo gestirai l'intero DB (query di inserimento, modifica, cancellazione e selezione incluse) con VB. In pratica Access ti serve solo per creare il DB e le tabelle (che per assurdo puoi creare anche con VB stesso), dopodiché lo puoi anche cancellare ;) perché il resto lo farai in VB.

Ora vorrei farti una domanda: che ci devi fare?! Forse capendo le tue intenzioni posso aiutarti meglio. Non capisco l'utilità di gestire un DB con Access che graficamente è nettamente inferiore a VB, per non parlare della gestione stessa delle tabelle.

Stefano

No nulla di particolare . Semplicemente a scuola stimao cominciando i database , poi faremo SQL ed Access . Mi sono reso conto che creare database e query con Access è molto più veloce che con Vb . L'unico fatto è che VB crea l'eseguibile ed Access no . Ecco tutto

StefanoCsl
05-02-2003, 14:39
E' normale che con Access sia più veloce creare una Query, Access è un Tool proprio per gestire DB. Vb è un linguaggio di programmazione che (per mia fortuna) può gestire infinite cose, tra cui Access, Excel, Word (parlando di Tool Microsoft). In più può interfacciarsi con Oracle, volendo con Internet, file multimediali e così via. Imparerai che VB è un mondo a se! :cool:

Quindi per gestire una query dovrai crearti un oggetto che emuli (volgarmente parlando) Access, o Oracle se il DB è fatto con Oracle, ma il linguaggio resta cmq Visual Basic. Ovvio che gestendo un Db con VB gli usi che ne puoi fare sono molteplici (scrivere il contenuto in un file di testo, mandarlo via EMail, metterlo su Internet, ecc ecc) dove ti può portare la fantasia. Ma se il tuo problema è solo leggere una tabella e visualizzarla, oppure provare query SQL ti consiglio di usare Access.

Vorrei cmq sapere perché ti interessa avere un programma eseguibile, se lo devi far girare su un PC basta portarsi il file MDB creato con un dischetto (o CD se è grande), ormai tutti i Computer hanno Office e quindi Access. Potresti eseguirlo da qualsiasi computer come se fosse un eseguibile, a patto che ci sia installato Access (possibilmente della stessa versione o cmq non inferiore).

leon84
05-02-2003, 17:25
Originally posted by "StefanoCsl"

E' normale che con Access sia più veloce creare una Query, Access è un Tool proprio per gestire DB. Vb è un linguaggio di programmazione che (per mia fortuna) può gestire infinite cose, tra cui Access, Excel, Word (parlando di Tool Microsoft). In più può interfacciarsi con Oracle, volendo con Internet, file multimediali e così via. Imparerai che VB è un mondo a se! :cool:

Quindi per gestire una query dovrai crearti un oggetto che emuli (volgarmente parlando) Access, o Oracle se il DB è fatto con Oracle, ma il linguaggio resta cmq Visual Basic. Ovvio che gestendo un Db con VB gli usi che ne puoi fare sono molteplici (scrivere il contenuto in un file di testo, mandarlo via EMail, metterlo su Internet, ecc ecc) dove ti può portare la fantasia. Ma se il tuo problema è solo leggere una tabella e visualizzarla, oppure provare query SQL ti consiglio di usare Access.

Vorrei cmq sapere perché ti interessa avere un programma eseguibile, se lo devi far girare su un PC basta portarsi il file MDB creato con un dischetto (o CD se è grande), ormai tutti i Computer hanno Office e quindi Access. Potresti eseguirlo da qualsiasi computer come se fosse un eseguibile, a patto che ci sia installato Access (possibilmente della stessa versione o cmq non inferiore).

Si è vero quello che dici tu . Ma se dovessi creare un database con Access e questo avesse la possibilità di fare l'eseguibile risparmierei tantissimo tempo .

StefanoCsl
05-02-2003, 18:53
Io ho visto un Db fatto in Access che non era un MDB, ma su quel PC Access era installato quindi non so se avrebbe funzionato lo stesso.
Stefano

giuseve
05-10-2006, 14:24
Sìììììììì, è ciò di cui ho bisogno pure io. Mi spiego: ho un DB Access che ho usato per catalogare e valutare i file immagine dei miei giochi per un vecchio 8bit (MSX). Poi è arrivato sul web un ottimo emulatore (bluemsx) richiamabile con una riga di comando opportunamente parametrata. Il passo successivo è stato quindi quello di aggiungere nei record i campi-parametro. Ora dalla mia maschera di access premo un bottone ed il PC passa il file XXX.zip all'emulatore EMU.EXE usando i parametri memorizzati nei campi appositi.
In realtà son 3 tabelle, qualche query ed una maschera, ma non so come rendere il tutto AUTONOMO per distribuire le ROMs, l'emulatore ed il frontend da me creato senza costringere gli utenti ad usare access. Il problema è che capisco poco di VB, ASP e comunque non mi pare il caso di costringere gli utenti ad installare IIS: insomma capisco poco più di un'H di programmazione. Esiste un "convertitore", un tool o qualsiasi altra cosa possa darmi una mano????

Grazie mille in anticipo !!!