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

Problem sa TClientDataSet u Turbo C++

[es] :: C/C++ programiranje :: Problem sa TClientDataSet u Turbo C++

[ Pregleda: 1763 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

pcHazard
Dražen Golić

Član broj: 129356
Poruke: 5
*.inecco.net.



Profil

icon Problem sa TClientDataSet u Turbo C++11.01.2007. u 23:08 - pre 210 meseci
Od skoro sam počeo raditi program u Turbo C++ 2006 Explorer koji koristi TClientDataSet, tj. MyBase tipove podataka. Prvo sam pokušao u ADO, ali je bilo komplikacija sa dodavanjem upisa pa sam prešao na MyBase.
Sve fino radi osim funkcije "Locate". Kad god želim da uradim Locate, izbaci mi grešku "Key violation".
Sve sam uradio po propisu (imam nešto iskustva sa bazama od prije...) i opet ne uspjevam.

Zna li iko u čemu je problem?
Hvala

Pozdrav iz RS!
 
Odgovor na temu

pcHazard
Dražen Golić

Član broj: 129356
Poruke: 5
*.inecco.net.



Profil

icon Re: Problem sa TClientDataSet u Turbo C++12.01.2007. u 16:10 - pre 210 meseci
Evo ovako:
Forma se zove "prijavfrm", "datt" je DataModule na kojem se nalaze ClientDataSet tabele i DataSource-evi za njih. Tabele su CDradnici (korisnici) i CDlog (tabela za upis radnji, nešto kao dnevnik). I tu je Edit1 kao ulaz za tekst.

Code:

TLocateOptions opts;
  opts << loCaseInsensitive;
  bool bl = datt->CDradnici->Locate("Korisnik",Edit1->Text,opts);
  if (!bl) {
    MessageBox(GetActiveWindow(), "Navedeno ime ne postoji u bazi!", "Greška!", MB_OK | MB_ICONSTOP);
    return;
  } else {
  if (CDradnici->FieldByName("Sifra")->Value != Edit2->Text) {
   MessageBox(GetActiveWindow(), "Pogrešno unesena šifra!", "Greška!", MB_OK | MB_ICONSTOP);
   return;
  } else {
   datt->CDlog->Append();
   datt->CDlog->FieldByName("Kategorija")->Value = "Korisnici";
   datt->CDlog->FieldByName("Datum i vrijeme")->Value =  Now();
   datt->CDlog->FieldByName("Korisnik")->Value = Edit1->Text;
   datt->CDlog->FieldByName("Radnja")->Value = "Prijavio se u program.";
   datt->CDlog->Post();
   prijavfrm->Close();
  };
  };


Ovo bi inače trebalo da radi, ne znam u čemu je problem.

[Ovu poruku je menjao X Files dana 12.01.2007. u 19:50 GMT+1]
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Problem sa TClientDataSet u Turbo C++12.01.2007. u 19:04 - pre 210 meseci
Čekaj, gde ti puca kod? Da li kod linije:
bool bl = datt->CDradnici->Locate("Korisnik",Edit1->Text,opts);
...ili negde drugde?

Za dalji deo koda, po mom iskustvu bolje je koristiti eksplicitno tipove, pa umesto ->Value, koristi:
->AsInteger
->AsString
->AsDateTime
->AsBoolean
->AsFloat
...

Dakle, umesto:
datt->CDlog->FieldByName("Kategorija")->Value = "Korisnici";
pokusaj:
datt->CDlog->FieldByName("Kategorija")->AsString = "Korisnici";
...itd.

A ako bas hoces da to bude Variant tip, FieldValues[] mi se bolje pokazao:
datt->CDlog->FieldValues["Kategorija"] = "Korisnici";

Dalje, umesto:
datt->CDlog->Append();
pokusaj:
datt->CDlog->Insert();


 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Problem sa TClientDataSet u Turbo C++13.01.2007. u 15:02 - pre 210 meseci
Na žalost, potpuno te razumem.

Nekoliko puta do sada sam morao da započnem projekat od NULE i da kopiram postojeći kod
da bi nešto proradilo, i na kraju i nisam shvatio gde je bila greška.

Koristio sam i drugu tehniku. Skraćivao sam kod: metodu po metodu (/*...*/), modul po modul
(Remove from Project), sve dok kod nije proradio.
 
Odgovor na temu

pcHazard
Dražen Golić

Član broj: 129356
Poruke: 5
*.inecco.net.



Profil

icon Re: Problem sa TClientDataSet u Turbo C++13.01.2007. u 22:58 - pre 210 meseci
Nije da mi se jednom desilo...
E, ovaj put sam se izvukao! Skontao sam šta je!
Izbacio sam taj DataModule iz projekta i obrisao fajlove. Onda sam dodao "friški" DataModule i sve ručno dodao i podesio, bez ikakvog dodjeljivanja podataka, i sad, naravno, radi.
Prije sam mijenjao samo komponente, ali očito sam morao čitav modul. I isključio sam iz projekta dbGo (ADO) paket, za svaki slučaj.
E ovo mi je najgore, kad na nekim glupostima izgubim vrijeme koje danima "proučavam" i mislim se šta je. Do sad je sve moglo biti gotovo

Hvala na pomoći, sad nastavljam posao, nadam se da neće biti još ovakvih događaja.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Problem sa TClientDataSet u Turbo C++

[ Pregleda: 1763 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

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