Bhè adesso...
Allora esistono 3 grandi possibilità
1) storica ultravecchia
2) storica
3) "moderna"
Storicamente esistevano due componenti principali: le ttable (tabelle) e le tquery (query).
Le differenze (in supersintesi) era che le tabelle si collegavano a tabelle "alla dbf" (o meglio alla paradox), quindi tipicamente una ttable aveva tutte le righe fisiche dalla tabella sottostante.
Si operavano con filtri sulle proprietà FILTER e FILTERED, ma sempre la tabella "tira su" tutte le righe.
Questo va bene se la tabella è piccola (qualche decina di migliaia di righe), non tanto bene se è grande (milioni)
la tquery invece conteneva una pre-selezione (tipo select * from tabella where codice=1), e quindi "tirava su" meno righe (anche solo 1).
Poi entrambi potevano (possono) essere castate (in realtà sono discendenti da) TDATASET, che è la classe che contiene i metodi che ti interessa.
Oggi quando ci si collega a database, firebird, mysql, oracle o quello che vuoi, tipicamente si utilizzano componenti di libreria che "mimano" il funzionamento delle vecchie ttable e tquery
Tornando alla domanda tipicamente si fa così
- avrai un componente tconnessione o qualcosa del genere al motore SQL, dove ci metti nome utente e password, IP etc
- avrai un componente "tabella avanzata" o più spesso "query avanzata" collegata alla tconnessione precedente
- avrai componenti tdatasource collegati ai precedenti
- avrai componenti visuali (griglie, editbox, etc) collegati ai tdatasource
Bene per scrivere i dati ci sono due approcci:
- ultrabrutale (INSERT sql)
- storico
Quello "ultrabrutale" consiste nel preparare una stringa di testo che contiene proprio il comando SQL (insert blablabla).
Poi la passi (o meglio la setti) come come comando SQL del componente tquery"avanzato", e poi la fai eseguire (active, open, exec, dipende dati tipi)
Quello "storico" invece - che direi è simile a quello che vuoi fare - comprende qualcosa tipo
codice:
var querynuova:...
miodataset:tdataset;
(...)
XSQL(querynuova,'select blablabla from tabella where ser=0'); // qui dipende da cosa utilizzi per eseguire la query; per aggiungere le righe, tipicamente, si fa una where inesistente, così ti ritorna un dataset vuoto. attenzione che vuoto NON è inattivo!
miodataset:=tdataset(querynuova); // questo cast esplicito è brutto, ma è comodissimo perchè quando cambierai la tquerynuova ti basterà cambiare UNA riga per farla funzionare magicamente
with miodataset do
begin
Append;
fieldbyname('cognome').asstring:='pippo';
fieldbyname('nome').asstring:='pluto';
fieldbyname('eta').asinterger:=3;
post;
end;
se invece vuoi leggere farai qualcoas tipo
XSQL(querynuova,'select * from tabella blablabla');
miodataset:=tdataset(querynuova);
with miodataset do
begin
first;
while not eof do
begin
showmessage(fieldbyname('cognome').asstring);
next;
end;
end;