[ milekrajina @ 05.07.2009. 15:25 ] @
Zbog cega mi sa ovim kodom nece da izbrise polje iz dbf baze: Adodc1.Recordset.Delete Adodc1.Recordset.MoveNext |
[ milekrajina @ 05.07.2009. 15:25 ] @
[ milekrajina @ 07.07.2009. 09:33 ] @
svaki savet dobro dosao
[ dzigilibonglica @ 07.07.2009. 11:46 ] @
Pojasni malo mitanje:
Mislis li na celu kolonu, ili na jedan pojedinacni zapis iz te kolone? Ovo sto si ti napisao sluzi za brisanje zapisa. Naravno moras prvo da podesis recordset da ti bude odredjenog tipa. I naravno naredba Delete ti je nepotpuna odnosno uradice ti nesto po default vrednosti, a ako ne znas sta je default, onda nisi siguran sta si uradio :( . Evo ti primer za ovo sto si ti pokusao kako bi trebalo da se radi (ili bar kako ja radim). Code: Private Sub IzbrisiRec() Dim Reci As ADODB.Recordset Set Reci = New ADODB.Recordset Reci.CursorType = adOpenDynamic Reci.CursorLocation = adUseClient Reci.LockType = adLockOptimistic Reci.Open "SELECT * FROM Reci WHERE Sifra='" & RSifra & "'", baza, , adCmdTable Reci.MoveFirst Reci.Delete (adAffectCurrent) Reci.Update Reci.Close End Sub Naravno pre svega treba da razumes recordset (sta je i kako funkcionise). Prvo ga definises, a bas od toga ti zavisi da li je nesto sto brises izbrisano samo kod tebe ili je se izvsilo i na bazi. Stoga sam ti i definisao Recordset u ovom primeru, ako je mozda tu greska. Delete naredba se uvek pise sa parametrom (da li sve ili samo onaj na kojem je kursor). Ako zelis da izbrises polje(kolonu) da uopste ne postoji u tabeli, to onda radis objektom Command. Naravno ovo ti je za MDB ili DBF, a ako je neka druga baza u pitanju, ovo sve moze biti skroz drugacije. I ako zelis da izbrises celu kolonu iz tabele, to ne zavisi samo od tvog koda vec i od baze (ne mozes brisati primarni key, ako je u drugoj bazi to forign key, odnosno postoji relacija, moras prvo nju da izbrises itd...) Pisi ako treba jos pomoci. [ milekrajina @ 07.07.2009. 12:44 ] @
Meni treba da mi on kada kliknem na tu sifru u dbGridu i kliknem na taster -Izbrisi- izbrise mi sve podatke za tu
sifru u bazi CMD_001.dbf? [ captPicard @ 07.07.2009. 13:34 ] @
Taj kod gore je to šta ti treba.
[ dzigilibonglica @ 07.07.2009. 15:22 ] @
U tom slucaju sve ostaje isto, samo kod naredbe Delete promeniti vrednost u zagradi da bude sledece:
Reci.Delete(adAffectAllChapters) Inace ako imas u tom zapisu bilo koje polje koje je PrimaryKey, a to se nalazi u nekoj drugoj tabeli kao foreign key, a relacija nema cascade delete, nece ti raditi! Pozdrav! [ milekrajina @ 08.07.2009. 09:27 ] @
Ne radi mi ovaj kod.
Ne znam sto,ali nece [ dzigilibonglica @ 08.07.2009. 11:59 ] @
JBG. Procitaj u mojoj prethodnoj poruci sta sam ti napisao zbog cega moze da se desi da nece da radi..... Primary->Forign Key (relacije)
A ako je sve to zadovoljeno pa ipak ne radi onda probaj ovaj kod. Ovo ti je malo budz u d*pe reshenje, i nije tako elegantno niti se bas praktikuje, al ce da radi: Code: Private Sub IzbrisiRec() Dim Reci As ADODB.Recordset Dim BrojZapisa, i as integer Set Reci = New ADODB.Recordset Reci.CursorType = adOpenDynamic Reci.CursorLocation = adUseClient Reci.LockType = adLockOptimistic Reci.Open "SELECT * FROM Reci WHERE Sifra='" & RSifra & "'", baza, , adCmdTable BrojZapisa=Reci.RecordCount For i=0 to BrojZapisa-1 Reci.MoveFirst Reci.Delete (adAffectCurrent) Reci.Update Next i Reci.Close End Sub Pa nek je sa srecom... Ako ti ni ovo ne radi, onda ne znam u cemu gresish i ja ti vise ne mogu pomoci. [ captPicard @ 08.07.2009. 12:16 ] @
Ajde barem kopiraj svoj kod ovdje, a ne da igramo kviz. I napiši na kojoj liniji ti baca grešku, opis greške...
[ milekrajina @ 08.07.2009. 13:48 ] @
Code: Baca gresku na ovoj liniji: Reci.Open "SELECT * FROM Reci WHERE Sifra='" & RSifra & "'", baza, , adCmdTable Greska je : Run-time error 3001 Arguments are of the wrong type,are out of acceptable range, or are in conflict with one another Kod je sledeci: Dim Reci As ADODB.Recordset Dim BrojZapisa, i as integer Set Reci = New ADODB.Recordset Reci.CursorType = adOpenDynamic Reci.CursorLocation = adUseClient Reci.LockType = adLockOptimistic Reci.Open "SELECT * FROM Reci WHERE Sifra='" & RSifra & "'", baza, , adCmdTable BrojZapisa=Reci.RecordCount For i=0 to BrojZapisa-1 Reci.MoveFirst Reci.Delete (adAffectCurrent) Reci.Update Next i Reci.Close [ captPicard @ 08.07.2009. 13:58 ] @
Zašto imaš dva zareza u parametru?
Sorry, kužim, ovo je ok. [ captPicard @ 08.07.2009. 14:00 ] @
Šta ti je RSifra, i di ju deklariraš?
[ dzigilibonglica @ 09.07.2009. 12:24 ] @
@ MileKrajina:
Druze, nemoj se ljutiti, ali ti si beznadezan slucaj.... Dao sam ti primer koda kako se nesto radi, a ti samo iskopirao ceo kod! Pa na mom primeru i tvom konkretnom programu ne moraju biti iste promenjive, a da ne pricamo o tome da nisu ni iste baze u pitanju. RSifra je neki string koji sam definisao na nivou celog programa, mozes tu promenjivu nazvati kako god hoces, a ona se popuni nekom vrednoscu kada se klikne na neki item liste. Znaci samo si iskopirao ceo kod, nista nisi izmenjao, Pa poBogu covece, na ovom primeru ti recordset gadja tabelu "Reci", jer sam ga iskopirao iz svog jednog projekta gde imam bazu sa tabelom Reci, gde je prvi element primary key tipa string, odnosno sifra, a tvoja baza je nesto sasvim hiljadito, a to da se potrefe dva lika sa dve strane foruma, koji imaju potpuno identicne strukture baze podataka , to ti je kao kad bi dva lika u isto vreme napisala Devetu Simfoniju.... Da li si uopste definisao objekat "baza", kojim si se koristio. Znaci,Jedini nacin da ti pomognem je: Mastering Visual Basic 6 Evangelos Petroutsos Nadji negde na netu, pa uci iz toga.... (CHAPTER 17—Database Programming with Visual Basic) Jbg, nemoj se ljutiti ali tako je [ captPicard @ 09.07.2009. 13:30 ] @
Citat: :-D Sorry Mile, ali i ja se slažem sa dzigilibonglicom ![]() p.s. ipak nemoj odustajati, budi uporan! Makar nam pojeo sve živce ovdje ![]() [Ovu poruku je menjao captPicard dana 09.07.2009. u 19:49 GMT+1] Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|