Article View: pl.comp.lang.delphi
Article #347001Re: Pomysł a funkcjonalność - prośba o poradę
From: J-23
Date: Wed, 15 May 2019 11:54
Date: Wed, 15 May 2019 11:54
74 lines
4196 bytes
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-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>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