🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi
Article #347001

Re: Pomysł a funkcjonalność - prośba o poradę

#347001
From: J-23
Date: Wed, 15 May 2019 11:54
74 lines
4196 bytes
W dniu 15.05.2019 o 13:04, zpksoft pisze:
> W dniu środa, 15 maja 2019 10:27:14 UTC+2 użytkownik lordbz napisał:
>>> U mnie przeważnie zapytania sql są tworzone dynamicznie (..)
>>>
>>> Paweł
>>
>> Może jakiś mały konkretny przykład ....
>> poproszę ?
>>
>> Przemek
> 
> No dobra, kawałek kodu (piszę z głowy):
> 
> var par: array of variant;
> sql: string;
> where: string;
> i: integer;
> begin
>    sql:='select * from tabelka ';
>    where:='';
>    if cbDat.Checked then begin
>      setLength(par, high(par)+2);
>      par[high(par)]:=eDat.Value;
>      where:=' where dat>:dat ';
>    end;
>    if cbMat.Checked then begin
>      setLength(par, high(par)+2);
>      par[high(par)]:=eMat.Value;
>      if where='' then where:=' where mat=:mat '
>      else where:=where+' and mat=:mat ';
>    end;
>    if cbPat.Checked then begin
>      setLength(par, high(par)+2);
>      par[high(par)]:=ePat.Value;
>      if where='' then where:=' where pat containing :pat '
>      else where:=where+' and pat containing :pat ';
>    end;
>    sql:=sql+where;
>    
>    query.sql:=sql;
>    query.prepare; //inicjacja parametrów (ale nie ich typów!)
>    
>    for i:=0 to high(par) do
>    begin
>      query.params[i].value=par[i];
>    end;
>    
>    //tu: ew. transakcja...
>    query.open; //dla select
> end;

Te kontrolki są do ułatwienia wielu rzeczy ale nie do wszystkiego - 
głównym ich zadaniem jest ułatwienie połączenia warstwy GUI z warstwą 
danych - by nie pisać kodu tam gdzie jest on zbędny.

Generowanie SQL to zupełnie inna bajka - u mnie (programuje teraz 
głownie w Javie i czasem w Lazarus) załatwiam to jedną klasą w całej 
aplikacji która w zależności od Parametrów generuje mi odpowiedni SQL i 
w takim wypadku nie korzystam z żadnych kontrolek ani zwykłych ani DB bo 
po co? Dane z kontrolek jeśli już są mi potrzebne bo np na ich podstawie 
jest generowany sql przekazuje za pomocą odpowiedniego property który 
znajduje się w klasie odpowiedzialnej za generowanie sql - po co? a no 
wszystko mam zamknięte w jednym module (obsługa wyjątków itd).

Można by to zrobić bez kodu nawet typu przekazanie do property ale 
wymagało by to napisania jeszcze jednego komponentu który kładę na formę 
i wskazuje w edytorze odpowiednie kontrolki DB. Ale to zrobię jeśli będę 
miał chwile czasu

PS a właśnie takie przykłady (choć rozumiem ze powyższy kod miał na celu 
pokazanie problemu) ale to co jest powyżej to jest metoda drutowania o 
której piszesz w tym wątku

Pozdrawiam
Technical Details
Message-ID: <5cdbfe0a$0$17364$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!feeder.erje.net!2.eu.feeder.erje.net!newsfeed.xs4all.nl!newsfeed8.news.xs4all.nl!85.12.16.69.MISMATCH!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <f1d5f52e-7035-41ad-a7bb-b78126030630@googlegroups.com> <002449dc-a011-4ede-9274-800249fd0699@googlegroups.com> <5cdb42f1$0$531$65785112@news.neostrada.pl> <0fd326ca-4ef2-402a-81a3-09d36f322b9d@googlegroups.com> <6dcd275e-3f6b-45db-9100-8cfbb31aa6a2@googlegroups.com> <de026013-f26c-43e7-8603-cbc4426398cf@googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!feeder.erje.net!2.eu.feeder.erje.net!newsfeed.xs4all.nl!newsfeed8.news.xs4all.nl!85.12.16.69.MISMATCH!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Subject: Re: Pomysł a funkcjonalność -
 prośba o poradę
Newsgroups: pl.comp.lang.delphi
References: <f1d5f52e-7035-41ad-a7bb-b78126030630@googlegroups.com> <002449dc-a011-4ede-9274-800249fd0699@googlegroups.com> <5cdb42f1$0$531$65785112@news.neostrada.pl> <0fd326ca-4ef2-402a-81a3-09d36f322b9d@googlegroups.com> <6dcd275e-3f6b-45db-9100-8cfbb31aa6a2@googlegroups.com> <de026013-f26c-43e7-8603-cbc4426398cf@googlegroups.com>
From: J-23 <Baczeklu@poczta.fm>
Date: Wed, 15 May 2019 13:54:44 +0200
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <de026013-f26c-43e7-8603-cbc4426398cf@googlegroups.com>
Lines: 74
Message-ID: <5cdbfe0a$0$17364$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 188.146.225.187
X-Trace: 1557921290 unt-rea-a-01.news.neostrada.pl 17364 188.146.225.187:38068
X-Complaints-To: abuse@news.neostrada.pl
X-Received-Bytes: 4010
X-Received-Body-CRC: 433541667
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit