🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.delphi.bazy-danych
4 messages
4 total messages Started by lordbz Sat, 28 Jul 2018 10:42
Dane, dbgrid i sql - prośba o radę
#82962
Author: lordbz
Date: Sat, 28 Jul 2018 10:42
39 lines
2789 bytes
Witam grupowiczów


Mimo upału trzeba starać się myśleć :-) Myślę ale .... proszę o poradę

Jest sobie kodzik:

////
with IBQuery, SQL do
    begin
      Close;
      Clear;
     Add('SELECT ucz.imie, ucz.nazwisko, ucz.id_uczestnik, uczestzaj.id_zajecia FROM instruk,ucz, uczestzaj ');
     Add('WHERE INSTRUK.id_instruk =:id_instruk  AND uczestzaj.id_uczestnik = UCZ.id_uczestnik AND UCZESTZAJ.id_instruk = INSTRUK.id_instruk ');
     ParamByName('id_instruk').AsString := IntToStr(dbtxtID_INSTRUK.Field.Value);

      Open;

    end;


// i po kodziku

1. baza firebird 2.5
2. tabele: ucz, instruk, uczestzaj
3. jeden człowieczek z tabeli ucz może mieć jednego lub więcej instruktora z tabeli instruk (poprzez uczestzaj)

Obsługiwacz programu klika na Grida na wybrany wyświetlany rekord (dla zdarzenia OnCellClick) i ten wybrany rekord (jego wartość pola id_instruk) wyświetla się w dbtxt . Proste !

Oczywiście dataset dla DBGrida i dbtxt wskazuje to samo źródło.

Skoro DBGrid służy do wyświetlenia danych ale nie przetrzymuje danych jako takich (tu mamy dataseta) to czy bezpiecznie jest pobrać wartość z dbtxt (która się pojawi przecież po kliknięciu jakiegoś rekordu na siatce) celem dalszej obróbki ???

Np: pobieram sobie wskazaną przez dbtxt wartość id_instruk i wykonuję update innej tabel. 
Wydawać by się mogło że jest bezpiecznie ale czuję jakiś wewnętrzny niepokój ;-)

pozdrawiam

Przemek
Re: Dane, dbgrid i sql - prośba o radę
#82963
Author: J-23
Date: Thu, 02 Aug 2018 18:54
47 lines
2779 bytes
W dniu 28.07.2018 o 12:42, lordbz pisze:
> Witam grupowiczów
> 
> 
> Mimo upału trzeba starać się myśleć :-) Myślę ale .... proszę o poradę
> 
> Jest sobie kodzik:
> 
> ////
> with IBQuery, SQL do
>      begin
>        Close;
>        Clear;
>       Add('SELECT ucz.imie, ucz.nazwisko, ucz.id_uczestnik, uczestzaj.id_zajecia FROM instruk,ucz, uczestzaj ');
>       Add('WHERE INSTRUK.id_instruk =:id_instruk  AND uczestzaj.id_uczestnik = UCZ.id_uczestnik AND UCZESTZAJ.id_instruk = INSTRUK.id_instruk ');
>       ParamByName('id_instruk').AsString := IntToStr(dbtxtID_INSTRUK.Field.Value);
> 
>        Open;
> 
>      end;
> 
> 
> // i po kodziku
> 
> 1. baza firebird 2.5
> 2. tabele: ucz, instruk, uczestzaj
> 3. jeden człowieczek z tabeli ucz może mieć jednego lub więcej instruktora z tabeli instruk (poprzez uczestzaj)
> 
> Obsługiwacz programu klika na Grida na wybrany wyświetlany rekord (dla zdarzenia OnCellClick) i ten wybrany rekord (jego wartość pola id_instruk) wyświetla się w dbtxt . Proste !
> 
> Oczywiście dataset dla DBGrida i dbtxt wskazuje to samo źródło.

Skoro wskazuje to samo źródło to jest to bezpieczne bo kontrolka dbtxt 
jest z gatunku DB (o ile cię dobrze zrozumiałem)

A to oznacza że kontrolka DB steruje DataSetem równie dobrze możesz 
odwołać się bezpośrednio do DataSet i będziesz miał tą samą wartość 
która jest w dbtxt.

> 
> Skoro DBGrid służy do wyświetlenia danych ale nie przetrzymuje danych jako takich (tu mamy dataseta) to czy bezpiecznie jest pobrać wartość z dbtxt (która się pojawi przecież po kliknięciu jakiegoś rekordu na siatce) celem dalszej obróbki ???
> 

Tak jak pisałem wyżej

Pozdrawiam
J-23
Re: Dane, dbgrid i sql - prośba o radę
#82964
Author: wloochacz
Date: Fri, 03 Aug 2018 20:20
23 lines
2158 bytes
W dniu 2018-07-28 o 12:42, lordbz pisze:
> Skoro DBGrid służy do wyświetlenia danych ale nie przetrzymuje danych jako takich (tu mamy dataseta) to czy bezpiecznie jest pobrać wartość z dbtxt (która się pojawi przecież po kliknięciu jakiegoś rekordu na siatce) celem dalszej obróbki ???
> 
> Np: pobieram sobie wskazaną przez dbtxt wartość id_instruk i wykonuję update innej tabel.
> Wydawać by się mogło że jest bezpiecznie ale czuję jakiś wewnętrzny niepokój;-)

Wszystko będzie działać, do momentu aż nie obsłużysz zdarzenia OnGetText 
pola DataSetu.
Czyli coś takiego:
DataSet.FieldByName('id_instruk').OnGetText := MetodaObslugiZdarzenia;

I jeśli ta metoda MetodaObslugiZdarzenia będzie cokolwiek robiła z 
wartością do wyświetlania, to taka wartość pojawi się we wszystkich 
kontrolkach dbAware (dbGrid, dbTextEdit, itd.).

I nie będziesz mógł jej wprost użyć jako parametr zapytania.
Dlatego (i nie tylko dlatego) po prostu lepiej pozyskać dane 
bezpośrednio z DataSeta, a kontrolki dbAware zostawić do prezentacji 
danych...


-- 
wloochacz
Re: Dane, dbgrid i sql - prośba o radę
#82965
Author: lordbz
Date: Mon, 06 Aug 2018 10:28
26 lines
2841 bytes
W dniu piątek, 3 sierpnia 2018 22:21:00 UTC+2 użytkownik wloochacz napisał:
> W dniu 2018-07-28 o 12:42, lordbz pisze:
> > Skoro DBGrid służy do wyświetlenia danych ale nie przetrzymuje danych jako takich (tu mamy dataseta) to czy bezpiecznie jest pobrać wartość z dbtxt (która się pojawi przecież po kliknięciu jakiegoś rekordu na siatce) celem dalszej obróbki ???
> > 
> > Np: pobieram sobie wskazaną przez dbtxt wartość id_instruk i wykonuję update innej tabel.
> > Wydawać by się mogło że jest bezpiecznie ale czuję jakiś wewnętrzny niepokój;-)
> 
> Wszystko będzie działać, do momentu aż nie obsłużysz zdarzenia OnGetText 
> pola DataSetu.
> Czyli coś takiego:
> DataSet.FieldByName('id_instruk').OnGetText := MetodaObslugiZdarzenia;
> 
> I jeśli ta metoda MetodaObslugiZdarzenia będzie cokolwiek robiła z 
> wartością do wyświetlania, to taka wartość pojawi się we wszystkich 
> kontrolkach dbAware (dbGrid, dbTextEdit, itd.).
> 
> I nie będziesz mógł jej wprost użyć jako parametr zapytania.
> Dlatego (i nie tylko dlatego) po prostu lepiej pozyskać dane 
> bezpośrednio z DataSeta, a kontrolki dbAware zostawić do prezentacji 
> danych...
> 
> 
> -- 
> wloochacz

Dziękuję :-) to mi bardzo pomaga ;-). Okazuje się że przeczucie mnie nie myliło. :-)Brakuje mi wiedzy. Pozdrawiam
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads