Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

SQL upiti u borland bilderu

[es] :: C/C++ programiranje :: SQL upiti u borland bilderu

[ Pregleda: 2751 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

DART_VEJDER
crna gora

Član broj: 58050
Poruke: 84
*.crnagora.net.



Profil

icon SQL upiti u borland bilderu23.02.2006. u 21:24 - pre 221 meseci
poceo sam uciti kako napraviti neku aplikaciju u Borland Bilderu koja ce sluziti kao interfejs za komunikaciju sa bazom podataka.
Kao prvo, iznenadio sam se koliko komponenti ima u borlandu koje se koriste u radu sa bazom...
zapeo sam kod toga KAKO POSLATI NEKI SQL UPIT BAZI I DA MI SE ISPISE REZULTAT TOG UPITA...
dakle, najbolje cete shvatiti ako skinete sliku koju sam postovao ovdje...

na formu sam stavio "Table1" i "DataSource1", povezao sam "Table1" na bazu, stavio Active=true, povezao "DataSource1" na "Table1", stavio sam onda "DBGrid1" koju sma povezao na "DataSource1" i u DBGridu mi se, naravno, pokazala tabela...(kao sto se vidi na slici)

onda sam stavio i "Table2" i "DataSource2" i "DBGrid2" koji ce ciniti detail prikaz tabele...
stavio sam da je "Table2" MasterSource=DataSource1 povezao "DataSource2" sa "Table2" , i "DBGrid2" na DataSource2 i sada mi vrsta odabrana u gornjoj tabeli prikazuje u donjoj...
sa strane su i "DBEdit"-i koji ce takodje pokazivati pojedinosti odabrane vrste u tabeli....
tu je i "DBNavigator" sa kojim mogu da editujem bazu...


e , mene sad interesuje moze li mi pomoci kako da ovoj bazi posaljem jednostavni SQL upit (npr. select AUTHOR_ID from IME_BAZE where AUTHOR_FIRST_NAME="janko" <- nije vazno da li je upit ispravan:-) )a da mi se rezultat tog upita prikaze u npr. donjoj tabeli....???

recimo da sam SQL upit vec definisao (njegov tekst) u kliku nekog dugmeta...

koje su mi komponente NEOPHODNE da bih poslao SQL upit?
da li su ove komponente koje sam do sad koristio dobre??

moze li mi ko pomoci???


kod žorža ti je ka' u banku!!
oko? sto ce ti oko??
Prikačeni fajlovi
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: SQL upiti u borland bilderu24.02.2006. u 16:34 - pre 221 meseci
Sve to sto pitas je mnogo kompleksna stvar da bi odgovor stao u par recenica.

Posto vec koristis BCB za pristup bazam podataka - probaj da zaboravis BDE
komponente (TTable, TDatabaae, TQuery, ...) i odmah pocni sa necim sto je
mnogo bolje, a takodje spada u BCB.

To je ADO set komponenti.

TADOConnection
TADOTable
TADOQuery

itd.

Samo nemoj da pomesas stvari: TDataSource, TDBGrid, itd, su zajednicke
komponente i nisu ni deo BDE ni ADO, vec su generalno komponente za rad sa
"nekim izvorom podataka".

BDE je napustena tehnologija (a zahteva i posebnu instalaciju na klijentskoj masini),
dok je ADO jos uvek aktuelna stvar kojom mozes (bez ikakve dodatne instalacije)
da pristupas cak i EXCEL podacima na malte ne isti nacin kao i svakom drugom
izvoru podataka.

Prva stvar o kojoj treba da vodis racuna je: koju bazu hoces da koristis kao
skladiste. Ja ti savetujem MS ACCESS (*.mdb). Jako je bitno da znas da podesis
takozvane relacije u toj bazi, primartne kljuceve, Autonumber ID-je itd, jer ce se
sve to kasnije reflektovati na tvoj program.

Sledecas stvar o kojoj moras razmisliti je da li ces bazi da pristupas:

* Direktno (C:\test\baza.mdb), ili
* Posredno (NEKI_ALIAS)

ALIAS ne neka vrsta 'identifikatora' koji je poznat na nivou sistema a podesava se
preko:

Control Panel / Adminintrative tools / ODBC data Sources / System DSN...

Prednost direktne putanje je u prirodnijem pristupu (preko manje slojeva), dok je
prednost ALIAS-a u tome sto mozes da promenis purtanju do baze u ALIAS-u
a da ne menjas program, jer ce on tu putanju traziti direktno od ALIAS-a.


Sto se tice slanja upita nekoj bazi najbolje je da koristis TADOQuery komponentu
u kojoj samo u property SQL stavis taj tvoj upit (koga mozes da napravis i
dinamicki), nesto kao:

ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add( "select * from myTable" );
ADOQuery1->Open();

 
Odgovor na temu

DART_VEJDER
crna gora

Član broj: 58050
Poruke: 84
*.crnagora.net.



Profil

icon Re: SQL upiti u borland bilderu24.02.2006. u 20:48 - pre 221 meseci
x files, hvala ti na iscrpnom odgovoru...

automatski cu krenuti na ADO.


ma baza podataka nije problem...
slazem se da je treba dobro osmisliti, i to i namjeravam uraditi, ali za sad mi je glavno da
prvo "uhvatim" tehniku rada sa bazom sto je do borlanda...

jos jednom hvala, i odmah krecem sa radom.Budem li naisao na kakve probleme - javicu se... ;-)



kod žorža ti je ka' u banku!!
oko? sto ce ti oko??
 
Odgovor na temu

DART_VEJDER
crna gora

Član broj: 58050
Poruke: 84
*.crnagora.net.



Profil

icon Re: SQL upiti u borland bilderu26.02.2006. u 22:20 - pre 221 meseci
iskoristio sam ADO komponente, i mogu da kazem da sam se odusevio lakocom njihovog koriscenja.
Medjutim, vrlo cesto mi se javi jedan problem:

kad posaljem neki SQL upit (a prije njega sve super radi) pojavi mi se upozorenje (greska):
Citat:

ADOQuery1: Cannot perform this operation on a closed dataset

Ja sam citao u help, ali mi nije sasvim jasno u cemu je fora...

Ovo se ne pojavljuje uvijek, vec ponekad...

Cini mi se da se ovo desavalo i kada sam pozivao Refresh za ADOTable...

znaci: cega se moram pridrzavati da se ovo ne bi desavalo...???

(koristim ADOConnection, ADOTable, ADOQuery, DataSource i DBGrid koje super rade do pojave ovoga...)

postoji li jos koji cest i opasan problem o kojem treba da povedem racuna??



[Ovu poruku je menjao DART_VEJDER dana 26.02.2006. u 23:22 GMT+1]
kod žorža ti je ka' u banku!!
oko? sto ce ti oko??
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: SQL upiti u borland bilderu27.02.2006. u 19:31 - pre 221 meseci
Citat:

ADOQuery1: Cannot perform this operation on a closed dataset


Ovako, najbolje je da mi ovde postujes kod koji smatras problematicnim (ili mozda
i ceo projekat bez *.tds, *.obj fajlova da uploadujes).

Da li ti je TADOQuery povezan sa TADOConnection preko Connection propertija?

Da li si za TADOQuery podesavao ConnectionString (ne treba, ako si to vec uradio
za TADOConnection)?

Da li si postavio TADOConnection da bude Open()?

Kako ti izgleda ConnectionString za TADOConnection (mozes da ga copy/paste)
ili jos bolje da das proceduru kako si ga napravio?

Da li bazi pristupas DIREKTNO ili preko ALIAS-a?

U principu za TADOQuery ti uopste ne treba TADOConnection, medjutim kada se
stvar uslozni, mnogo je bolje imati i TADOConnection dostupnim. Pogotovo jer
TADOConnection ima i puno drugih metoda koje kogu biti korisne na nivou baze.


P.S.

Vec duze vremena se kanim da napravim neki tutorijal za upotrebu ADO-a u
Borland C++ Builder-a, pa cu se valjda uskoro i namoliti. On bi trebao da obuhvati:

- projektovanje baze
- postavljanje odgovarajucih komonenti
- povezivanje komponenti
- postavljanje odgovarajuceg koda
- hvatanje gresaka
- mogucnost visekorisnickog rada



[Ovu poruku je menjao X Files dana 27.02.2006. u 20:37 GMT+1]
 
Odgovor na temu

DART_VEJDER
crna gora

Član broj: 58050
Poruke: 84
*.crnagora.net.



Profil

icon Re: SQL upiti u borland bilderu27.02.2006. u 23:07 - pre 221 meseci

Citat:
Da li ti je TADOQuery povezan sa TADOConnection preko Connection propertija?


jeste


Citat:
Da li si za TADOQuery podesavao ConnectionString (ne treba, ako si to vec uradio
za TADOConnection)?


nisam, vec sam to uradio za ADOConnection...


Citat:
Da li si postavio TADOConnection da bude Open()?


e to nisam nista dirao, vjerovatno je kako je po default-u..(??)
(ako si mislio na "connected" e to je stavljeno na true, i pri pravljenju ConnectionStringa je probana konekcija koja je OK...)
Da stavim u konstruktor ADOConnection->Open() ???


Citat:
Kako ti izgleda ConnectionString za TADOConnection (mozes da ga copy/paste)
ili jos bolje da das proceduru kako si ga napravio?


evo ovako: Build - Provider MS Jet 4 OLE DB provider - Select database (odabrao) - Test Connection (OK) - Read/Write i to je to...

Citat:

Da li bazi pristupas DIREKTNO ili preko ALIAS-a?


pa direktno, pretpostavljam... :-)



Citat:
U principu za TADOQuery ti uopste ne treba TADOConnection, medjutim kada se
stvar uslozni, mnogo je bolje imati i TADOConnection dostupnim. Pogotovo jer
TADOConnection ima i puno drugih metoda koje kogu biti korisne na nivou baze.


pa dobro, ja jesam povezao ADOQuery na ADOConnection...to je ok..??
pored toga povazan je i ADOTable i jos jedan ADOQuery...je li i to OK..??

Ali znas kako...cesto kada sam pozivao (ako ne grijesim naredbu sad napamet) ADOTable1->Refresh() i tada mi se znalo cesto to javiti... (ona greska...)

jednostavno javi: ADOQuery1: Cannot perform this operation on a closed dataset


i jos samo jedno pitanje: kako da npr. "izvucem" iz tabele npr. 6. element kolone "ID" npr...??

jer bih htio napraviti jednu for petlju koja bi isla i gledala svaki element neke (odredjene) kolone..(ne, ne moze se odraditi to sto sam zamislio SQL upitom >>bar mi se cini<< )
znaci kako ucitati npr u neki Edit ili u neku promjenjivu npr. vrijednost nekog elementa neke odredjene kolone...??

moze li mi ko oko toga pomoci...??
kod žorža ti je ka' u banku!!
oko? sto ce ti oko??
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: SQL upiti u borland bilderu28.02.2006. u 15:21 - pre 221 meseci
Citat:

ADOQuery1: Cannot perform this operation on a closed dataset


Pretpostavljam (mada nisam siguran) da ti je neka od tabela koje su ukljucene u
pretrazivanje ostale u stanju Active = false. Dakle pre pozivanja ADOQuery-ja
postavi tabele koje su ukljucene u upit da budu aktivne:

Code:

ADOTable->Active = true;
// onda ovde Query na uobicajen nacin
ADOTable->Active = false;


ili

Code:

ADOTable->Open();
// onda ovde Query na uobicajen nacin
ADOTable->Close();


ili prosto sve te tabele proglasi Active jos u design mode-u.



Sto se tice pretrazivanja neke tabele, to mozes uraditi:

1) Ugradjenim funkcijama za pretrazivanje nekog izvora podataka:

Lookup()
Locate()

NAPOMENA: Otvori BCB Help, idi na "Index", ukucaj: Locate example, i potrazi
u listi stavke:

Using Locate
Using Lookup

Imas odlicno objasnjene primere kako da "pokupis" podatke nekog zapisa (Lookup),
ili da se pozicioniras ne neki slog koji ispunjava uslove (Locate).

2) Sopstvenim kodom:

Code:

// NETESTIRANI

ADOTable->Refresh();
ADOTable->First();
while ( ! ADOTable->Eof )
{
   AnsiString POLJE1 = ADOTable->FieldByName( "Polje1" )->AsString;
   int POLJE2 = ADOTable->FieldByName( "Polje2" )->AsInteger;

   // itd ...

   // ... OVDE STAVLJAS NEKE USLOVE ...
}



Opet, pre toga, ako je neki DGGrid i sl. prikopcan na tabelu, onda je najbolje:

Code:

ADOTable->DisableControls()
// ...
ADOTable->EnableControls()

...u suprotnom ces "videti" kako se vrsi prolazak kroz slogove.


P.S.

Pojedinacnim elementima neke tabele mozes pristupati na sledece nacine:
(a od tebe zavisi da li vrsis dodelu ili samo uzimanje neke vrednosti)

Code:

ADOTable1->FieldByName("ime")->AsString
ADOTable1->FieldByName("prezime")->AsString
ADOTable1->FieldByName("telefon")->AsString


ili

Code:

ADOTable1->FieldValues["ime"]
ADOTable1->FieldValues["prezime"]
ADOTable1->FieldValues["telefon"]


or:

Code:

ADOTable1->Fields->Fields[0]->AsString
ADOTable1->Fields->Fields[1]->AsString
ADOTable1->Fields->Fields[2]->AsString


[Ovu poruku je menjao X Files dana 28.02.2006. u 16:25 GMT+1]
 
Odgovor na temu

DART_VEJDER
crna gora

Član broj: 58050
Poruke: 84
*.crnagora.net.



Profil

icon Re: SQL upiti u borland bilderu28.02.2006. u 19:03 - pre 221 meseci
da li mi se samo ucinilo , ili se mozda nismo najbolje razumjeli oko jedne stvari...

meni treba ne da pristupim nekoj koloni (npr. IME)

pa sada da imam citavu kolonu, nego npr. kada kazem:

select IME from ime_tabele;

(i ono mi izbaci sva imena u toj tabeli) ja onda zelim da pristupim nekom imenu u 5. vrsti (znaci peto ime po redu...) ili 7. ...znaci neki odredjeni zapis po redu...i da taj string smjestim u Edit1->Text...

ovo pitam samo informativno jer mi se ucinilo po onome sto si napisao da se nismo razumjeli, a ja cu svejedno pogledati sve ono u help -u sto si mi rekao....

u svakom slucaju: PUNO TI HVALA...
kod žorža ti je ka' u banku!!
oko? sto ce ti oko??
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: SQL upiti u borland bilderu28.02.2006. u 20:26 - pre 221 meseci
Citat:

ja onda zelim da pristupim nekom imenu u 5. vrsti (znaci peto ime po redu...)


Pazi ovako, ako hoces da pristupis nekoj podatku u nekom REDU moras petljom
da dodjes do njega i da ga onda procitas:

Ako si vec *izvrsio* Query, onda mozes ovako:

Code:

// NETESTIRANO !!!

for ( int i=0; i<ADOQuery->RecordCount; i++ )
{
   if ( ( i == NEKI_RED ) && ( ADOQuery->FieldValues["Polje1"] == NEKA_VREDNOST ) )
      // ... uradi nesto ...

   ADOQuery->Next();
}
 
Odgovor na temu

DART_VEJDER
crna gora

Član broj: 58050
Poruke: 84
*.crnagora.net.



Profil

icon Re: SQL upiti u borland bilderu01.03.2006. u 11:10 - pre 221 meseci
pokusacu ovako...


ali opet se postavlja pitanje: ako nadjem da mi je u 13. redu kolone "ID" nadjeno nesto sto sam trazio i zelim da neki broj iz tog polja stavim u promjenjivu
int broj;

kako to uraditi...(jer cini mi se da ovo ne moze to odraditi)

evo sta konkretno hocu.

recimo da imamo kolonu "ID" u kojoj se nalaze brojevi. trenutno npr. ima 15 zapisa u njoj.
izbrisemo npr. 5. i 6. zapis i tu nam ostane prazno mjesto (brojevi se ne unose automatski u nju).
sljedeci put kad dodajemo zapis meni treba for petlja da provjeri da li za neki broj N (redovi u koloni ID) vazi da je sljedeci za 1 veci od njega (kad bi dosli do 4. onda bi sljedeci bio 7 jer smo izbrisali 5 i 6 i onda bi sacuvao neki unos sa ID-om 4+1 jer 5 nedostaje...tako bi sljedeci put popunio i 6-icu pa bi tek onda nastavio od 15...)

ja znam da ima i nesto tipa "auto insert number" u samom accessu kad se pravi baza, ali to nesto nisam ni probao, a i JA ZELIM SAM da unosim brojeve u ID kolonu...i ona bi bila i primarni kljuc...


kod žorža ti je ka' u banku!!
oko? sto ce ti oko??
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: SQL upiti u borland bilderu01.03.2006. u 14:15 - pre 221 meseci
Predlazem ti da: NE DODELJUJEŠ BROJEVE ID-ja SAM, NEGO TO PREPUSTI SAMOJ
BAZI, i to upravo kao AUTONUMBER tip.

Prosto ne možeš se pouzdati u onu N+1 matematiku da ustanoviš da li nešto
nedostaje.

REDOSLED koji FIZIČKI vidiš kada sa ACCESS-om GLEDAŠ slogove, uopšte NE MORA
da bude redosled kojim se u nekoj petlji prolazi kroz te slogove. To zavisi od
Indexa, ali i od nekih drugih faktora.

Ako ipak hoćeš da te BROJEVE za ID dodeljuješ sam, onda ćeš morati da prethodno
učitaš celu kolonu ID-ja i vršiš proveru nekim sortiranjem i sl.

Ako znaš ID neke kolone, onda sa onom funkcijom Lookup() možeš da dohvatiš
njene ostale podatke.

Inače postoji i funkcija Bookmark() kojom možeš da MARKIRAŠ, tj OBELEŽIŠ neki
slog, i bez obzira da li si nešto brisao u međuvremenu, njome lako možeš da se
pozicioniraš na taj ZABELEŽENI zapis i pročitaš njegove vrednosti.

Inače, nije u duhu baza podataka da pominješ 15-ti, 4-ti, tj N-ti slog. Imam utisak
da si pomešao logiku EXCEL-a i ACCESS-a :)

Uvek postoji neko drugačije rešenje koje je u duhu baza podataka.

 
Odgovor na temu

DART_VEJDER
crna gora

Član broj: 58050
Poruke: 84
*.crnagora.net.



Profil

icon Re: SQL upiti u borland bilderu01.03.2006. u 20:34 - pre 221 meseci
Citat:
Imam utisak
da si pomešao logiku EXCEL-a i ACCESS-a :)

:-)

ma ne, ja sam misio izvrsiti upit "select ID from ime_tabele" i sortirati nadjeno i onda odraditi f-ju koju sam upravo napisao:

//netestirano jos:

Code:
int NoviID()
{
int i=1,a,b,IND=0;
while(i<=Form1->ADOQuery1->RecordCount && IND==0)
{
if(i==Form1->ADOQuery1->RecordCount)
IND=i+1;
else
{
a=Form1->ADOQuery1->FieldValues["ID"];
Form1->ADOQuery1->Next();
b=Form1->ADOQuery1->FieldValues["ID"];
if(a!=b-1)
IND=a+1;
i+=1;
}
}
return IND;
}


koja bi trebala vratiti onaj broj koji nedostaje, tj. sljedeci broj ako je sve u redu (jos samo da provjerim da li je ok ovo oko "i" promjenjive...kazem: nisam jos ispitao f-ju...)

pa ako bih stavio u bazi da su mi ID primarni kljucevi i "auto number", a na formi (npr. "Dodaj" gdje dodajem novi zapis u bazu)
imam nekih 5 Edit-a u koje kada unesemo podatke za novi upis i pomocu njih napravimo upit "insert into table IME_TABELE values(Edit1->Text,Edit2->Text ....)"
da li da stavim da je neki od njih "ID"??tj. kako bih tada pravio upit?? ako ne bih stavio da je neki od njih ID, onda bi javljalo greku kako upit ne valja jer nema "ID" podatka u upitu, a opet ako bih stavio, kako ga unijet kad je on "autonumber"...??
nadam se da shvatas sta zelim da kazem...
kako bih tada pravio upite? da li da ukljucujem ID u upit (i kako) ili ne (i kako to onda...??)

e i jos jedna stvar, posto ime teme glasi "SQL upiti..." samo jos jednu stvar da pitam:
kada npr. pravim tabelu u access-ovoj bazi preko upita, kako definisem kolonu u koju se upisuju brojevi??

npr. zasto ovo nece da radi: create table CLANOVI (ime char(10),prezime char(10), br_godina number(2));

za text je sve u redu, ali broj nece da prihvati...
mozda sam se trebao obratiti forumu "baze podataka" ali posto se i ovdje raspravlja o upitima...
pokusao sam i sa integer (2) i slicno, ali nece...


[Ovu poruku je menjao DART_VEJDER dana 01.03.2006. u 21:36 GMT+1]
kod žorža ti je ka' u banku!!
oko? sto ce ti oko??
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: SQL upiti u borland bilderu02.03.2006. u 14:24 - pre 220 meseci
> pa ako bih stavio u bazi da su mi ID primarni kljucevi i "auto number",

ID u tvom slucaju *može* da bude Primarni ključ, ali *ne može* da bude
AutoNumber jer ovo drugo predvidjeno da ga sistem sam.

> a na formi (npr. "Dodaj" gdje dodajem novi zapis u bazu) imam nekih 5 Edit-a
> u koje kada unesemo podatke za novi upis i pomocu njih napravimo upit [...]

Jesi li siguran da želiš da koristiš TEdit a ne TDBEdit? Po meni, bolje ti je
da se odmah navikneš na komponente koje *jesu* namenjene bazama podataka.

> "insert into table IME_TABELE values(Edit1->Text,Edit2->Text ....)"
> da li da stavim da je neki od njih "ID"??tj. kako bih tada pravio upit??

Upit za dodavanje novog sloga ti uopšte ne treba ako koristiš TDBEdit-e
i TDBNavigator. To će za tebe bez i jedne jedine linje koda uraditi
TDBNavigator.

Ali ako baš hoćeš TEdit-e i TADOQuery, onda bi upit trebao da izgleda
otprilike ovako:

// netestirano
AnsiString Upit = "INSERT INTO NekaTabela VALUES(" + Edit1->Text + "," + Edit2->Text + ")";

(treba naravno proveriti sintaksu)

> ako ne bih stavio da je neki od njih ID, onda bi javljalo greku kako upit
> ne valja jer nema "ID" podatka u upitu, a opet ako bih stavio, kako ga unijet
> kad je on "autonumber"...??

Onda nemoj da ti bude AUTO-NUMBER. Neka bude samo Number i Primarni kljuc

> npr. zasto ovo nece da radi: create table CLANOVI (ime char(10),prezime char(10),
> br_godina number(2));

Nisam nikada dinamicki pravio nove tabele u Access-ovu bazu. Barem ne u skorije vreme
i sa ADO. Mislim da samim SQL upitom to neces moci. Mislim da treba neki drugaciji
kod, koji je vise ADO sistemski, ali ti ga sada ne mogu pronaci jer nisam prikacen
na net (u trenutku dok ti kucam ovaj odgovor).

Pogledacu, pa cu ti javiti.

P.S.

Ti izgleda pravis gresku koju sam i ja pravio kada sam prvi put poceo da radim sa bazama
podaka u C++ Builderu.

Bolje ti je da ZABORAVIŠ TEdit i probas kako to radi sa TDBEdt.

Bolje ti je da ZABORAVIŠ TButton za dodavanje i koristiš TDBNavigator koji već
ima INSERT/DELETE/EDIT/NEXT/PRIOR/FIRST/LAST/REFRESH

Bolje ti je da ZABORAVIŠ ID-je o kojima sam razmišljaš, i dopustiš bazi
(auto-number) da to sama dodeli (sem ukoliko redosled ID-ja nije 100% neophodan).

Kada dodaješ novi slog sa TDBEdit uopšte nećeš morati da razmišljaš
o AutoNumber poljima niti da ih uopšte vidiš na formu (ako sam ne želiš).
 
Odgovor na temu

DART_VEJDER
crna gora

Član broj: 58050
Poruke: 84
*.crnagora.net.



Profil

icon Re: SQL upiti u borland bilderu02.03.2006. u 18:39 - pre 220 meseci
Citat:
Jesi li siguran da želiš da koristiš TEdit a ne TDBEdit?


mene DBEdit ne interesuje kad ima mogucnost da direktno mjenja zapis u bazi samim unosenjem teksta u DBEdit jer desi se da se covjek predomisli i kaze "ipak necu da promjenim nista" a ono vec sacuvano a ako maknem tu mogucnost onda prakticno dobijam sam Edit (DBEdit-e koristim samo da mi prikaze odabrane zapise iz DBGrid-a,tj. nakon nekog SQL upita jer imaju tu mogucnost)

zato ja ovaj nacin ne volim vec volim klikom na dugme da kriram SQL upit koristeci Edit i Button (eto ti i odgovor zasto koristim dugme) i ne samo to...
onaj mi navigator izgleda estetski jako lose i ne profesionalno... (samo moje misljenje)

Citat:
Ali ako baš hoćeš TEdit-e i TADOQuery, onda bi upit trebao da izgleda
otprilike ovako:

// netestirano
AnsiString Upit = "INSERT INTO NekaTabela VALUES(" + Edit1->Text + "," + Edit2->Text + ")";

pa dobro, to je ok, ovo nije problem, to sam i ja napisao, nego je to problm kada si stavio da ti je "ID" "autonumber" a radis preko upita...

Citat:
Bolje ti je da ZABORAVIŠ ID-je o kojima sam razmišljaš, i dopustiš bazi
(auto-number) da to sama dodeli (sem ukoliko redosled ID-ja nije 100% neophodan).

Kada dodaješ novi slog sa TDBEdit uopšte nećeš morati da razmišljaš
o AutoNumber poljima niti da ih uopšte vidiš na formu (ako sam ne želiš).


pa pogledacu i ovako da pokusam uraditi...
kod žorža ti je ka' u banku!!
oko? sto ce ti oko??
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: SQL upiti u borland bilderu02.03.2006. u 19:56 - pre 220 meseci
Ako nece preko Querija za dodavanje novog sloga, onda to uradi ovako:

Code:

ADOTable1->Insert();

ADOTable1->FieldByName( "Polje_ID" )->AsInteger = StrToInt( Edit1->Text );
ADOTable1->FieldByName( "Polje2" )->AsString = Edit2->Text;
ADOTable1->FieldByName( "Polje3" )->AsString = Edit3->Text;
// ...

ADOTable1->Post();


ili ako se radi o AutoNumberu, potpuno izbaci liniju:

Code:

// izbaciti!
ADOTable1->FieldByName( "Polje_ID" )->AsInteger = StrToInt( Edit1->Text );


jer ce taj upis baza sama kreirati.


[Ovu poruku je menjao X Files dana 02.03.2006. u 20:58 GMT+1]
 
Odgovor na temu

[es] :: C/C++ programiranje :: SQL upiti u borland bilderu

[ Pregleda: 2751 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.