🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

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

#347019
From: zpksoft
Date: Sat, 18 May 2019 12:14
115 lines
6244 bytes
W dniu sobota, 18 maja 2019 12:42:28 UTC+2 użytkownik Roman Wilk napisał:
> W dniu sobota, 18 maja 2019 12:15:28 UTC+2 użytkownik zpksoft napisał:
> > W dniu sobota, 18 maja 2019 12:01:10 UTC+2 użytkownik Roman Wilk napisał:
> > > > To ja Ciebie teraz poproszę o alternatywne rozwiązanie zagadnienia które przedstawiłem w kodzie. Dwa check-boxy i dwie kontrolki edycyjne.
> > > > Ciekaw jestem jak to będzie wyglądało "bez drutowania"
> > > > 
> > > > Paweł
> > > 
> > > Jak cos od poczatku jest "drutem", to rzeczywiscie trudo nie drutowac :-).
> > > 
> > > 1. Uzyj komponentow DB, czyli DBCheckBox i DBEdit (dla przykladu)
> > > 2. Powiaz z lokalnym DataSet, np. ClientDataSet (oczywiscie, moze byc ich wiele ...)
> > > 3. Uzyj tego co ClientDataSet oferuje z automatu (osobiscie nie uzywam) do zapisu do bazy danych.
> > > 4. Napisz automatyzacje kodu zapisu do bazy danych (w tym przypadku DB moze byc dowolna) tego co masz w lokalnym DataSeci'e (ja tak robie)
> > > 5. Przyklad kodu SQL'a automatyzacji dla Firebird'a 
> > > 
> > > function CreateUpdateOrInsertCommand(LocalTable: TDataSet; pozycje: TList;
> > >   tableName: string; MatchingFields: array of string; params: TParams): string;
> > > var
> > >   i: integer;
> > >   poz: string;
> > >   sqlcomm: string;
> > >   sep: Boolean;
> > > 
> > >   function GetMatchingCondition(MatchingFields: array of string): string;
> > >   var
> > >     i: integer;
> > >     cmd: string;
> > >   begin
> > >     cmd := '';
> > >     for i := 0 to high(MatchingFields) do
> > >       cmd := cmd + MatchingFields[i] + ',';
> > >     cmd := Copy(cmd, 1, length(cmd) - 1);
> > >     Result := cmd;
> > > 
> > >   end;
> > > 
> > > begin
> > >   sep := False;
> > >   sqlcomm := 'UPDATE OR INSERT INTO ' + tableName + ' ( ';
> > >   for i := 0 to pozycje.Count - 1 do
> > >   begin
> > >     poz := PString(pozycje[i])^;
> > >     if LocalTable.FieldByName(poz).FieldKind = fkData then
> > >     begin
> > >       if sep = true then
> > >         sqlcomm := sqlcomm + ', ';
> > >       sqlcomm := sqlcomm + poz;
> > >       sep := true;
> > >     end;
> > >   end;
> > >   sqlcomm := sqlcomm + ') VALUES (';
> > >   sep := False;
> > >   for i := 0 to pozycje.Count - 1 do
> > >   begin
> > >     poz := PString(pozycje[i])^;
> > >     if LocalTable.FieldByName(poz).FieldKind = fkData then
> > >     begin
> > >       if sep = true then
> > >         sqlcomm := sqlcomm + ', ';
> > >       sqlcomm := sqlcomm + ':' + poz;
> > >       params.Add;
> > >       params[params.Count - 1].name := poz;
> > >       params[params.Count - 1].DataType := LocalTable.FieldByName(poz).DataType;
> > >       if not LocalTable.FieldByName(poz).IsNull then
> > >         params[params.Count - 1].Value := LocalTable.FieldByName(poz).Value;
> > >       sep := true;
> > >     end;
> > >   end;
> > >   sqlcomm := sqlcomm + ')';
> > >   sqlcomm := sqlcomm + ' MATCHING( ' + GetMatchingCondition
> > >     (MatchingFields) + ')';
> > >   Result := sqlcomm;
> > > 
> > > end;
> > > 
> > > Ps.
> > > Jak Ci 3 osby mowia, ze jestes pijany, to poloz sie spac :-)
> > > 
> > > Pozdrawiam 
> > > ----
> > > Roman
> > 
> > Człowieku, przecież ty ręcznie ulepiłeś sql-a, podobnie jak ja.
> > 
> > Paweł
> 
> Ty tak serio ?
> 
> Nie widzisz roznicy pomiedzy tym co Ty napisales, a moim przykladem na to, ze kontrolki DB, sa jednak przydatne :-)
> Bo jesli tak, to rzeczywiscie przemysl czy programowanie "zarobkowe" to, to co powinienies robic.
> 
> Pozdrawiam
> ----
> Roman

Krótka analiza:

Mój kod: 38 linii, 109 słów, 923 znaków,
Twój kod: 60 lnii, 227 słów, 1679 znaków,

cytat z mojego kodu (tworzenie sql):
>    if where='' then where:=' where mat=:mat '
>    else where:=where+' and mat=:mat ';
>    sql:=sql+where;

cytat z twojego kodu (tworzenie sql):
>      if sep = true then
>        sqlcomm := sqlcomm + ', ';
>      sqlcomm := sqlcomm + ':' + poz;


To by było na tyle, odłączam się od tego wątku bo to już tylko bicie piany.

Paweł
Technical Details
Message-ID: <95e615be-25a3-4800-a52e-262e3d00aedd@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin1!goblin3!goblin.stu.neva.ru!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!u76no319505ita.0!news-out.google.com!p73ni297itp.0!nntp.google.com!i64no321225iti.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!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> <qbgv5q$3f6$1@node2.news.atman.pl> <98f7302e-73d3-42cd-8017-d762169aecf7@googlegroups.com> <qbhat3$ead$1@node2.news.atman.pl> <16cb3810-8959-4887-8e67-9d268ad7b9e7@googlegroups.com> <e559209a-fd84-4206-a081-6b13e56d7821@googlegroups.com> <cb3be295-ea9b-4f89-a7c0-3937c9d06261@googlegroups.com> <5cdf299b$0$17345$65785112@news.neostrada.pl> <254d1279-bfbf-475a-819b-2764f76ee2bc@googlegroups.com> <0ee35f1d-a0cb-4061-b2b1-9737e860fbba@googlegroups.com> <f638631a-ab7e-4d59-bec2-27dabe20b647@googlegroups.com> <fd0c1459-a900-4763-8669-0e998fc129ad@googlegroups.com>

Show Full Headers
Complete Article Headers
X-Received: by 2002:a24:7c04:: with SMTP id a4mr14249955itd.138.1558181684233;        Sat, 18 May 2019 05:14:44 -0700 (PDT)
X-Received: by 2002:aca:3d46:: with SMTP id k67mr8127742oia.66.1558181683964; Sat, 18 May 2019 05:14:43 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin1!goblin3!goblin.stu.neva.ru!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!u76no319505ita.0!news-out.google.com!p73ni297itp.0!nntp.google.com!i64no321225iti.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.delphi
Date: Sat, 18 May 2019 05:14:43 -0700 (PDT)
In-Reply-To: <fd0c1459-a900-4763-8669-0e998fc129ad@googlegroups.com>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=217.99.211.175; posting-account=8ND_mgoAAAD5J9y9fnaTB1Kcu7xKWk7Q
NNTP-Posting-Host: 217.99.211.175
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> <qbgv5q$3f6$1@node2.news.atman.pl> <98f7302e-73d3-42cd-8017-d762169aecf7@googlegroups.com> <qbhat3$ead$1@node2.news.atman.pl> <16cb3810-8959-4887-8e67-9d268ad7b9e7@googlegroups.com> <e559209a-fd84-4206-a081-6b13e56d7821@googlegroups.com> <cb3be295-ea9b-4f89-a7c0-3937c9d06261@googlegroups.com> <5cdf299b$0$17345$65785112@news.neostrada.pl> <254d1279-bfbf-475a-819b-2764f76ee2bc@googlegroups.com> <0ee35f1d-a0cb-4061-b2b1-9737e860fbba@googlegroups.com> <f638631a-ab7e-4d59-bec2-27dabe20b647@googlegroups.com> <fd0c1459-a900-4763-8669-0e998fc129ad@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <95e615be-25a3-4800-a52e-262e3d00aedd@googlegroups.com>
Subject: Re: j Re: Pomysł a
 funkcjonalność - prośba o
 poradę
From: zpksoft <zpksoft@op.pl>
Injection-Date: Sat, 18 May 2019 12:14:44 +0000
Lines: 135
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit