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

Problem sa jednostavnom bazom (ClientDataset, DataSource i DBGrid)

[es] :: Pascal / Delphi / Kylix :: Problem sa jednostavnom bazom (ClientDataset, DataSource i DBGrid)

[ Pregleda: 191 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

stameni
Ivan Stamenković

Član broj: 6739
Poruke: 561



+10 Profil

icon Problem sa jednostavnom bazom (ClientDataset, DataSource i DBGrid)03.07.2025. u 18:12 - pre 2 dana i 1h
Na formu sam stavio ClientDataSet, DataSource i DBGrid komponente, i popunio odgovarajuće propertyje. Na formi sam prilkom dizajniranja imao vidljiv DBGrid, koji sam nekako (ne sećam se tačno kako) disableovao.

Ideja mi je bila da se prilikom pokretanja aplikacije i ne pojavljuje DBGrid, već onda kada korisnik klikne na "New" ili na "Open". Uspešno sam rešio to design-time, ali mi sada run-time ne radi. Mora da sam negde nešto pogrešio prilikom dizajniranja forme.

Evo nekoliko kritičnih linija.

Code:

procedure TMainForm.FileNewClick(Sender: TObject);
var
  s: String;
begin
  s := ParamStr(0);
  s := ExtractFilePath(s);
  s := s + 'New.cds';
  cds.FileName := s;
  cds.Insert;
  cds.Fields[0].AsInteger := 10;
  cds.Fields[1].AsString := 'abcd';
  cds.Fields[2].AsInteger := 12;
  cds.Fields[3].AsFloat := 12.12;
  cds.Fields[4].AsFloat := 122.24;
  cds.Active := true;
end;

procedure TMainForm.FileOpenClick(Sender: TObject);
var
  s: String;
begin
  s := ParamStr(0);
  s := ExtractFilePath(s);
  OpenDialog1.InitialDir := s;
  if OpenDialog1.Execute then
    cds.LoadFromFile(OpenDialog1.FileName);
  cds.Active;
end;


BTW, program upisuje u bazu (vidim da baza raste), ali nikako da se vidi DBGrid.
 
Odgovor na temu

stameni
Ivan Stamenković

Član broj: 6739
Poruke: 561



+10 Profil

icon Re: Problem sa jednostavnom bazom (ClientDataset, DataSource i DBGrid)04.07.2025. u 17:10 - pre 1 dan i 2h
Novi i mnogo važniji problem: nikako ne mogu da izmenim podatak u postojećoj bazi. Evo koda:

Code:

procedure TForm1.Button1Click(Sender: TObject);
begin
  cds.Open; { cds je TClientDataSet }
  cds.First;
  while not cds.Eof do
    begin
      cds.Fields[1].AsString := 'upis u bazu'; { * }
      cds.Next;
    end;
  cds.Close;
end;


Pukne kod reda sa zvezdicom, uz run-time poruku "cds: Dataset not in edit or inser mode".

Nešto je siiitno, ali ja na ovu vrućinu ne shvatam šta...

A pokušavao sam na mnooogo načina da otvorim bazu, ali -- jok, uvek pukne kod upisa. S druge strane, čitanje radi savršeno.
 
Odgovor na temu

iculibrk
Bačka Palanka
21400

Član broj: 321321
Poruke: 875



+161 Profil

icon Re: Problem sa jednostavnom bazom (ClientDataset, DataSource i DBGrid)04.07.2025. u 17:45 - pre 1 dan i 2h
Možda pre
Code:
cds.Fields[1].AsString := 'upis u bazu'; { * }
staviti
Code:
cds.Edit
a posle
Code:
cds.Post


Za problem iz prvog posta možda ovako:
Code:
procedure TMainForm.FileNewClick(Sender: TObject);
var
  s: String;
begin
  s := ParamStr(0);
  s := ExtractFilePath(s);
  s := s + 'New.cds';
  cds.FileName := s;
  cds.Insert;
  cds.Fields[0].AsInteger := 10;
  cds.Fields[1].AsString := 'abcd';
  cds.Fields[2].AsInteger := 12;
  cds.Fields[3].AsFloat := 12.12;
  cds.Fields[4].AsFloat := 122.24;
  cds.Active := True;

  DBGrid1.Visible := True;
end;

procedure TMainForm.FileOpenClick(Sender: TObject);
var
  s: String;
begin
  s := ParamStr(0);
  s := ExtractFilePath(s);
  OpenDialog1.InitialDir := s;
  if OpenDialog1.Execute then
  begin
    cds.LoadFromFile(OpenDialog1.FileName);
    cds.Active := True;
    DBGrid1.Visible := True;
  end;
end;


Po meni nedostaje
Code:
DBGrid1.Visible := True;


[Ovu poruku je menjao iculibrk dana 04.07.2025. u 19:10 GMT+1]
 
Odgovor na temu

stameni
Ivan Stamenković

Član broj: 6739
Poruke: 561



+10 Profil

icon Re: Problem sa jednostavnom bazom (ClientDataset, DataSource i DBGrid)04.07.2025. u 21:29 - pre 22h 19min
Bio si u pravu oko oba Mnogo hvala

Izgubio sam sate i sate pokušavajući sam da izguglam rešenje... a pretpostavljao sam da je tako "jevtino"
 
Odgovor na temu

stameni
Ivan Stamenković

Član broj: 6739
Poruke: 561



+10 Profil

icon Re: Problem sa jednostavnom bazom (ClientDataset, DataSource i DBGrid)05.07.2025. u 16:37 - pre 3h 11min
Ako može još malo pomoći...

Potreban mi je neki event na koji bih mogao da se "zakačim" kada god se napusti polje (ćelija). Tada treba da mi se ažurira poslednje polje.

Probao sam ovako:

Code:

procedure TMainForm.DBGrid1KeyPress(Sender: TObject; var Key: Char);
var
  updated: Extended;
begin
  if (Key = #13) or (Key = #38) or (Key = #40) then
    begin
      // neka kalkulacija čiji je rezultat updated
      cds.Edit;
      cds.Fields[4].AsFloat := updated;
      cds.Post;
    end;
end;


(#38 i #40 su kodovi za strelice gore i dole)

Međutim, ovaj event ne hvata strelice (Ne hvata ni klik mišem, ali se to valjda može srediti.)
 
Odgovor na temu

iculibrk
Bačka Palanka
21400

Član broj: 321321
Poruke: 875



+161 Profil

icon Re: Problem sa jednostavnom bazom (ClientDataset, DataSource i DBGrid)05.07.2025. u 17:06 - pre 2h 42min
Umesto OnKeyPress koristi OnColExit
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Problem sa jednostavnom bazom (ClientDataset, DataSource i DBGrid)

[ Pregleda: 191 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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