Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno DELPHI ADO komponenty

Zdravím Vás. Som začiatočník a chcel by som Vás poprosiť, či niekto nemá nejaký jednoduchý projekt v Delphi kde sa pracuje s údajmi v databáze v Accesse prostredníctvom ADO komponentov SQL príkazmi.(prezeranie napr.v DBgride, vkladanie záznamov, editácia a pod.)Vopred Vám ďakujem.
email- suchan@wmx.sk
Rado

Předmět Autor Datum
vo verzii delphi,ktorá to podporuje máš dostatok príkladov v samotnej inštalácii
ogl 19.11.2008 13:42
ogl
Ďakujem.Skúsim prezrieť.Ale ešte by som aj napriek tomu poprosil, ak niekto máte to zapojenie kompon…
Rado 19.11.2008 14:29
Rado
ADOQuery slouzi pro spousteni SQL prikazu (SELCT, INSERT, UPDATE, DELETE, ...) ADOCommand je univerz…
Jan Fiala 19.11.2008 18:34
Jan Fiala
Na nejakom fóre som čítal, že ADOQuery je určené hlavne pre SELECT, že na INSERT atd. je určený ADOC…
Rado 20.11.2008 08:00
Rado
ADOQuery muzes pouzit na jakekoliv SQL prikazy. Na spusteni prikazu jsou 2 metody: Open v pripade, z…
Jan Fiala 20.11.2008 08:57
Jan Fiala
Obrovská vďaka za objasnenie. Pokúsim sa s tým popracovať. Určite sa ešte ozvem.;-)
Rado 20.11.2008 10:38
Rado
Ešte sa chcem spýtať, ADOTable je prioritne na čo určený? Aké je jeho použitie?
Rado 21.11.2008 08:23
Rado
ADOTable je primy pristup k tabulce. Pro Access je to pouzitelne, pro SQL servery se tomu vyhni. Pro…
Jan Fiala 21.11.2008 11:10
Jan Fiala
Ke druhe casti tve odpovedi. Ta nema nic spolecneho s Delphi nebo ADO, ale musis se nauci syntaxi SQ…
Jan Fiala 19.11.2008 18:36
Jan Fiala
ADOTable1.Append; ADOQuery1.Active:=false; ADOQuery 1.SQL.Clear; ADOQuery1.SQL.Add('UPDATE Kontakty…
Rado 29.11.2008 13:27
Rado
1. Ano, ADOQuery slouží na vykonání příkazu SQL. ADOTable na práci (vkládání, prohlížení, změnu) s t…
Filuta 29.11.2008 14:54
Filuta
Jaky vyznam mam vlozeni prazdne vety do tabulky (APPEND) a jeji ulozeni (POST) ve sojeni s tim SQL p…
Jan Fiala 29.11.2008 15:17
Jan Fiala
Ďakujem Vám obom za rady. Už som to naplnil priamo cez adotable.funguje to výborne.Len som nevedel ž…
Rado 29.11.2008 19:00
Rado
To jsou 2 ruzne pristupy. Bud pres AdoTable pres Edit/Append, naplneni hodnot a Post nebo pres AdoQu…
Jan Fiala 29.11.2008 20:38
Jan Fiala
JJ, už mi je to zase jasnejšie. Učím sa...:-) Ešte raz vďaka:beer: poslední
Rado 29.11.2008 22:15
Rado

Ďakujem.Skúsim prezrieť.Ale ešte by som aj napriek tomu poprosil, ak niekto máte to zapojenie komponent.Kopec vecí mi nie je jasných.Aký je rozdiel medzi ADOQuery,ADOCommand, ADODataSet, kedy ktorú komponentu použiť atď.Skúšal som vkladať do tabuľky prostredníctvom ADOCommand nejaké hodnoty cez príkaz INSERT INTO kontakty VALUES ... a keď som zadal všetky hodnoty akrem primárneho kľúča tak mi vypísalo chybové hlásenie, že nie sú vyplnené všetky hodnoty.Ale primárny kľúč mám nastavený v accese ako automat. číslo a to samozrejme nenapĺňam. Proste moc by mi pomohlo také všeobecné základné nastavenia z dôvodu výuky a pochopenia práce jednotlivých komponent.Ešte raz ďakujem.

ADOQuery slouzi pro spousteni SQL prikazu (SELCT, INSERT, UPDATE, DELETE, ...)
ADOCommand je univerzalni komponenta, kterou muzes pouzit pro Query, StoredProc i jako Dataset. Zalezi, jak nastavis Command type
ADODataset slouzi pro pristup k tabulce primo jako k tabulce. Ale tohle se na SQL serverech moc nenosi, protoze tim degradujes SQL server na obycejny souborovy server

Na nejakom fóre som čítal, že ADOQuery je určené hlavne pre SELECT, že na INSERT atd. je určený ADOCommand.Tak mám v tom ešte väčší chaos.Ešte otázočka - na čo je určený ADOTable.Chcel by som Vás ešte poprosiť aspoň pre začiatok nejaký ľahký návod prepojenia jednotlivých komponent. Napr. pre výpis y tabulky v Accese do DBGridu mám komponenty napojené: ADOConnection->ADODataset->Datasource->DBGrid (Funguje to ale neviem či je to najvhodnejšie prepojenie).No a mám problém s vkladaním údajov do tabuľky.Neviem či pri tomto zapojení mi to pôjde. Ďakujem za odpovede.

ADOQuery muzes pouzit na jakekoliv SQL prikazy.
Na spusteni prikazu jsou 2 metody:
Open v pripade, ze se vraci data (SELECT)
ExecSQL v pripade, ze se data nevraci (INSERT, DELETE, UPDATE)

Tohle vse samozrejme udelas i omoci ADOCommand, kdyz jej prepnes do rezimu Query

Pokud pouzivas ADODataset, pristupujes primo k tabulce. V pripade Access je to jedno, stejne budes mit lkalni program. Pokud bys mel sitovy program a SQL server, tohle by zpusobilo tahani vsech dat z tabulky k tobe

ADOTable1.Append;
ADOQuery1.Active:=false;
ADOQuery 1.SQL.Clear;
ADOQuery1.SQL.Add('UPDATE Kontakty SET Meno = "'+Edit1.Text+'", Priezvisko = "'+Edit2.Text+'", Adresa = "'+Edit3.Text+'", Mesto = "'+Edit4.Text+'", PSC = "'+Edit5.Text+'", Stat = "'+Edit6.Text+'", Email = "'+Edit7.Text+'", Telefon = "'+Edit8.Text+'" WHERE KontaktyID = '+ ADOTable1.FieldByName('KontaktyID').AsString );
ADOQuery1.ExecSQL;
ADOTable1.Post;

Chcel by som Vás poprosiť o radu. 1.Otázka - ADOQuery slúži na vykonanie SQL príkazu a ADOTable na vkladanie údajov do tabuľky prostredníctvom Datasource?
2. Mám vyššie uvedené príkazy popísané správne?
3. Pri sopustení mi to vyhadzuje syntaktickú chybu v hrubo označenej časti- chýba nejaký operátor. Už si s tým skutočne neviem rady.
Ďakujem za akúkoľvek pomoc :-)

1. Ano, ADOQuery slouží na vykonání příkazu SQL. ADOTable na práci (vkládání, prohlížení, změnu) s tabulkou nebo pohledem.
2. Ne.
3. Ve WHERE vám chybí uvozovky, do kterých se cpe text: WHERE KontaktyID = "'+ ADOTable1.FieldByName('KontaktyID').AsString + '"').

Poznámka: Přidání nové věty a naplnění hodnotami zadanými operátorem, je daleko výhodnější udělat rovnou přes SQL INSERT. Parametry pro SQL příkazy je lépe zadávat přes parametry, než to tam pracně cpát takto. Lépe se to udržuje, je to přehlednější pro případné pozdější úpravy programu.

Zpět do poradny Odpovědět na původní otázku Nahoru