Article View: pl.comp.lang.delphi
Article #347002Re: Pomysł a funkcjonalność - prośba o poradę
From: zpksoft
Date: Wed, 15 May 2019 12:30
Date: Wed, 15 May 2019 12:30
82 lines
4818 bytes
4818 bytes
W dniu środa, 15 maja 2019 13:54:59 UTC+2 użytkownik J-23 napisał: > 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 Drutowanie inaczej pojmuję :) Ja bym to raczej nazwał programowaniem (chyba, że to pojęcie już wyszło z użycia?) A tak konkretniej- pytający chciał prostej ilustracji w kodzie i ją podałem. Paweł
Technical Details
Message-ID:
<b91da0c2-0187-4129-81de-e1f714b82de4@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!news.unit0.net!newsreader4.netcologne.de!news.netcologne.de!feeder1.cambriumusenet.nl!feed.tweak.nl!209.85.166.216.MISMATCH!i64no124634iti.0!news-out.google.com!l135ni122itc.0!nntp.google.com!i64no124633iti.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailReferences:
<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> <5cdbfe0a$0$17364$65785112@news.neostrada.pl>Show Full Headers
Complete Article Headers
X-Received: by 2002:a24:b349:: with SMTP id z9mr8587291iti.77.1557923457743; Wed, 15 May 2019 05:30:57 -0700 (PDT) X-Received: by 2002:aca:c456:: with SMTP id u83mr1847860oif.129.1557923457474; Wed, 15 May 2019 05:30:57 -0700 (PDT) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!news.unit0.net!newsreader4.netcologne.de!news.netcologne.de!feeder1.cambriumusenet.nl!feed.tweak.nl!209.85.166.216.MISMATCH!i64no124634iti.0!news-out.google.com!l135ni122itc.0!nntp.google.com!i64no124633iti.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.delphi Date: Wed, 15 May 2019 05:30:57 -0700 (PDT) In-Reply-To: <5cdbfe0a$0$17364$65785112@news.neostrada.pl> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=83.22.194.139; posting-account=8ND_mgoAAAD5J9y9fnaTB1Kcu7xKWk7Q NNTP-Posting-Host: 83.22.194.139 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> <5cdbfe0a$0$17364$65785112@news.neostrada.pl> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <b91da0c2-0187-4129-81de-e1f714b82de4@googlegroups.com> Subject: Re: Pomysł a funkcjonalność - prośba o poradę From: zpksoft <zpksoft@op.pl> Injection-Date: Wed, 15 May 2019 12:30:57 +0000 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit