PDA

Visualizza la versione completa : [DELPHI 2005] Database Access


gygabyte017
10-11-2005, 23:05
Mi potreste dire gentilmente TUTTE le operazioni che devo fare x connettermi/fare query su un database access? non ho idea di che componenti utilizzare e come operare... aiutatemi grazie
:ciauz:

gygabyte017
11-11-2005, 13:47
up :dhò:

gygabyte017
12-11-2005, 14:51
.............. :confused:

alka
12-11-2005, 16:11
Le procedure che puoi seguire per collegarti ad un database Microsoft Access dipendono dalla libreria/piattaforma che intendi utilizzare.

Ad esempio, con dbGo for ADO, puoi utilizzare il componente ADOConnection e impostare la proprietà ConnectionString attraverso l'apposito editor.

In seguito, utilizzando ADOCommand, ADOQuery e così via, puoi eseguire query di selezione o comando sul database stesso.

In seguito, usi un TDataSource per poter collegare a questi DataSet un qualsiasi controllo visuale "data aware", quali TDBGrid, TDBEdit e così via.

Mi riferisco ad un'applicazione di tipo VCL Application per Win32.

Ciao! :ciauz:

gygabyte017
12-11-2005, 17:18
Grazie... si direbbe che ci sono riuscito... ma non riesco a capire come si fanno query con risultato. Nel senso che se devo fare INSERT INTO ci sono riuscito, ma per fare SELECT come devo fare? chi conterrà i risultati?
(Ah poi mi puoi spiegare che è un dataset?)

Ciao ciao e grazie

alka
13-11-2005, 04:18
Originariamente inviato da gygabyte017
[...] per fare SELECT come devo fare? chi conterrà i risultati?
Per eseguire una query, come in precedenza, dipende dalla libreria utilizzata.

Hai fatto uso della libreria dbGo for ADO?

In tal caso, il componente ADOQuery ad esempio ti consente di eseguire una qualsivoglia query, anche di selezione.

I dati saranno "bufferizzati" dal componente, sebbene ne esistano alcuni (in altre librerie, oltreché in ADO, che supportino unicamente cursori unidirezionali).


Originariamente inviato da gygabyte017
Ah poi mi puoi spiegare che è un dataset?

Tecnicamente, la libreria VCL definisce "dataset" qualsiasi componente discendente da TDataSet: questa classe fornisce metodi e proprietà che sono comuni a qualsiasi classe discendente, solitamente componenti come ADOTable, ADOQuery, IBTable, IBQuery, TTable, TQuery e così via, insomma tutti i componenti che contengono righe e colonne di una tabella ottenuta da una query o da un'altra sorgente dati (una tabella preselezionata dal DB) e che, generalmente, possono essere associati ad un componente TDataSource che provvede a fare da interprete tra il DataSet "di turno" e il controllo visuale data aware che è in grado di visualizzarne i dati.

Ciao! :ciauz:

gygabyte017
13-11-2005, 13:11
Ecco quello che ho fatto: (si uso dbGo)
Sul form ci sono:
----
ADOConnection1 con la relativa ConnectionString corretta
ADODataSet1 collegato con ADOCOnnection1
DataSource1 collegato con ADODAtaset1
ADOQuery1 collegato con ADOCOnnection1 e DataSource1
DBGrid1 collegato con DataSource1
---
Ora x eseguire query uso alla pressione di un tasto:


procedure TForm1.Button1Click(Sender: TObject);
begin
adoquery1.SQL.Clear;
adoquery1.SQL.Text := 'INSERT INTO UserTable (aUsername,aPassword) VALUES (''CIAO'',''TESTR'')';
try
showmessage(inttostr(adoquery1.ExecSQL));
except on E:Exception do
begin
showmessage('ERRORE: '+e.Message)
end;
end;
end;

e questo funziona. ora per ricevere valori con la SELECT faccio:


procedure TForm1.Button2Click(Sender: TObject);
begin
adoquery1.SQL.Clear;
adoquery1.SQL.Text := 'SELECT * FROM UserTable WHERE (aUsername=''XXX'' and aPassword=''TEST'')';
try
showmessage(inttostr(adoquery1.ExecSQL));
except on E:Exception do
begin
showmessage('ERRORE: '+e.Message)
end;
end;

end;

però nella DBGrid1 non vedo risultati... che sbaglio??

alka
14-11-2005, 01:47
Originariamente inviato da gygabyte017
Ecco quello che ho fatto: (si uso dbGo) [...]
però nella DBGrid1 non vedo risultati... che sbaglio??
La DBGrid è associata al componente TDataSource che fa riferimento al componente ADODataSet il quale non viene mai utilizzato nel tuo codice.

Il DataSource dovrebbe fare riferimento in questo caso al componente ADOQuery.

Ciao! :ciauz:

Loading