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

delete (sql) brise sve redove

[es] :: C/C++ programiranje :: delete (sql) brise sve redove

[ Pregleda: 1886 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

milan_sr
Milan Savov
Strumica

Član broj: 262218
Poruke: 108
92.55.110.*



+26 Profil

icon delete (sql) brise sve redove23.10.2010. u 20:07 - pre 104 meseci
hocu da izbrisem red u bazi na osnovi podatka po koloni...kada koristim nesto ovako DELETE FROM Tabela WHERE Kolona1=1 AND Kolona2=1 radi OK znaci izbrise samo jedan red...al kad koristim DELETE FROM Tabela WHERE Kolona1 LIKE '%" + Edit->Text + "%' AND Kolona2 LIKE '%" + Edit1->Text + "%'"; da kazemo u edit se zapisuje vredost kolone1 po kliku u edit1 se zapisuje vrednost po kolone2 po kliku....ako u gridu imam 6 reda i selektiram prvi red i izbrisem ok je...ali ako selektiram zadnji red i izbrisem ode sve...Ucemu je problem tu?
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
*.adsl.net.t-com.hr.



+9 Profil

icon Re: delete (sql) brise sve redove23.10.2010. u 20:22 - pre 104 meseci
To je specifičan slučaj kada sql upit moraš sastavljati upotrebom QuotedStr funkcije.

http://www.delphipages.com/forum/showthread.php?t=143249
 
Odgovor na temu

milan_sr
Milan Savov
Strumica

Član broj: 262218
Poruke: 108
92.55.110.*



+26 Profil

icon Re: delete (sql) brise sve redove23.10.2010. u 22:42 - pre 104 meseci
ako ti nije tesko aj sastavi ga ovo sa tom funkciom.....

AnsiString Upit= "DELETE FROM Tabela WHERE Kolona1 LIKE '%" + Edit->Text + "%' AND Kolona2 LIKE '%" + Edit1->Text + "%'";

probao sam ama ne mi ide...javlja mi gresku t.e puca sql...ako nije problem...Hvala ti...
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4860
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+622 Profil

icon Re: delete (sql) brise sve redove24.10.2010. u 17:19 - pre 104 meseci
Imas neku gresku u kodu a ne u upitu.

Napravi neki test primer, sa Edit-om u kome mozes da menjas delove upita.

Da li koristis?
ADOQuery1->ExecSQL();
... umesto:
ADOQuery1->Open();
 
Odgovor na temu

milan_sr
Milan Savov
Strumica

Član broj: 262218
Poruke: 108
92.55.108.*



+26 Profil

icon Re: delete (sql) brise sve redove24.10.2010. u 17:27 - pre 104 meseci
evo koda

ADOQuery1->Close();
ADOQuery1->SQL->Clear();
AnsiString Upit= "DELETE FROM Tabela WHERE Kolona1 LIKE '%" + Edit->Text + "%' AND Kolona2 LIKE '%" + Edit1->Text + "%'";
ADOQuery1->SQL->Add( Upit );
ADOQuery1->ExecSQL();

kako sta je reko itf probao sam da koristim QuotedStr funkciju, kao sto sam primetio ona dodaje ' na pocetku i nakraju od stringa...nikako ne mogu uklopiti funkciju u upit...svaki put upit "pukne"...upit kao sta je gore napisan brise mi celu tabelu...kada brises redom odozgo pa nadole ured je brise...ali ako probas da izbrises neki drugi red onda izbrise celu tabelu(bar kod mene tako funkcionise). Hvala


[Ovu poruku je menjao milan_sr dana 24.10.2010. u 18:39 GMT+1]
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4860
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+622 Profil

icon Re: delete (sql) brise sve redove24.10.2010. u 19:52 - pre 104 meseci
Evo jedan primer, pa vidi kako kod mene radi.

Moraces da ponovo napravis ConnectionString i za TADOTable i za TADOQuery, jer je kod mene apsolutna putanja.


Inace, potrebno je neko vreme (sekund, dva) da bi se podaci reflektovali na DBGrid, pa mozes kod doraditi sa nekim Close/Open nad TADOTable...
Prikačeni fajlovi
 
Odgovor na temu

milan_sr
Milan Savov
Strumica

Član broj: 262218
Poruke: 108
92.55.110.*



+26 Profil

icon Re: delete (sql) brise sve redove25.10.2010. u 14:37 - pre 104 meseci
i kod mene radi tako kada nemam relacie u bazi...al kad ima eve kako radi...evo primer http://0.mk/test2 ako nije problem pogledaj...
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4860
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+622 Profil

icon Re: delete (sql) brise sve redove25.10.2010. u 16:26 - pre 104 meseci
Ne mogu da pruzmem fajl, mada trenutno i nemam puno vremena.

Ako su relacije problem, da nisi mozda u\kod integriteta baze definisao da se kaskadno brise?

U svakom slucaju, ne treba ti SQL upit za operaciju koju zelis


1. DisableControls
2. Napravis klasicu petlju koja ide do EOF i brises stavku po stavku sve sto je pod uslovom koji zelis
3. EnableControls
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4860
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+622 Profil

icon Re: delete (sql) brise sve redove25.10.2010. u 19:15 - pre 104 meseci
Ovo je tvoj kod koji ne radi:
Code:

ADOQuery1->Close();
ADOQuery1->SQL->Clear();
AnsiString Upit = "DELETE FROM Relacija WHERE IDT1 in (SELECT IDTabela1  from Tabela1 WHERE IDTabela1 LIKE '%"+DBEdit1->Text+"%') AND IDT2 in  (select IDTabela2  from Tabela2 WHERE IDTabela2 LIKE '%" + Edit2->Text+ "%')";
ADOQuery1->SQL->Add( Upit );
ADOQuery1->ExecSQL();


UVEK u fazi testiranja, pre izvrsenja upita stavi neki ShowMessage(), koji ce ti pokazati kako glasi upit i eventualno gde je greska.

Dakle, umesto:
Code:

ADOQuery1->ExecSQL();

... stavi:
Code:

// ADOQuery1->ExecSQL(); // komentar, ne izvrsava se
ShowMessage( Upit );


Videces da uvek dobijas PRAZAN DBEdit1->Text.
Code:

... IDTabela1 LIKE '%%' ...

... sto znaci da se SVE uzima u obzir, a ne ono sto ocekujes.

DBEdit->Text je prazan jer PRVO zatvaras upit (ADOQuery1->Close();) a zatim pokusavas da pristupis elementu tog zatvorenog upita (DBEdit1->Text).

Dakle, pre zatvaranja treba da ZAPAMTIS sta da prosledis u upit:

Code:

AnsiString STA_BRISEM = DBEdit1->Text;
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
AnsiString Upit = "DELETE FROM Relacija WHERE IDT1 in (SELECT IDTabela1  from Tabela1 WHERE IDTabela1 LIKE '%"+STA_BRISEM+"%') AND IDT2 in  (select IDTabela2  from Tabela2 WHERE IDTabela2 LIKE '%" + Edit2->Text+ "%')";
ADOQuery1->SQL->Add( Upit );
ADOQuery1->ExecSQL();

 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4860
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+622 Profil

icon Re: delete (sql) brise sve redove25.10.2010. u 19:28 - pre 104 meseci
Milane, u ovoj poruci:
http://www.elitesecurity.org/p2723775
...NISI dao kod koji proizvodi problem. Da si dao PRAVI kod, problem bi bio resen odmah.


Inace, i taj LIKE ti je opasan u upitu, jer ce obrisati sve sto SADRZI U SEBI trazeni broj, a to sigurno ne zelis.
 
Odgovor na temu

milan_sr
Milan Savov
Strumica

Član broj: 262218
Poruke: 108
92.55.110.*



+26 Profil

icon Re: delete (sql) brise sve redove25.10.2010. u 20:03 - pre 104 meseci
Hteo sam da ne "kopliciram" upit, a i sa tim upitom daje iste rezultate...Naviko sam od dev c++ da koristim watch i tu sam probao i mislim da dbedit je imao vredost koju zelim ili sam nes drugo video...hvala ti mnogo za pomoc
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4860
212.200.65.*

Jabber: xfiles@elitesecurity.org


+622 Profil

icon Re: delete (sql) brise sve redove26.10.2010. u 06:11 - pre 104 meseci
Kada uploadujes test projekat, prethodno obrisi: *.tds *.obj *.~* fajlove, jer nisu potrebni. Recimo *.tds fajl cini cesto oko 90% velicine samog projekta. Tada ces moci da uploadujes projekat i na ES.
 
Odgovor na temu

[es] :: C/C++ programiranje :: delete (sql) brise sve redove

[ Pregleda: 1886 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

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