Article View: pl.comp.lang.delphi.bazy-danych
Article #82721Re: Kopiowanie , prośba o podpowiedź - kopiowanie pól z dbgrid
From: zpksoft
Date: Thu, 02 Feb 2017 07:54
Date: Thu, 02 Feb 2017 07:54
82 lines
5463 bytes
5463 bytes
W dniu niedziela, 29 stycznia 2017 19:44:47 UTC+1 użytkownik lordbz napisał:
> Witam
>
>
> Założenie jest następujące. Na serwerze jest w bazie MSSQL tabela. User łączy się z tabelą.
>
> Wszystko działa, jest połączenie, w dbgrid1 pojawia się pusta tabela np. grupy.
>
>
> Następnie otwiera sobie tabelę w dbgrid2 z lokalnego hdd o takiej samej nazwie i takiej samej strukturze ale wypełnionej danymi.
>
> Teraz chodzi o to żeby po kliknięciu przekopiować (koniecznie z tabeli z danym ) do tabeli na serwerze dane ale chciałbym zrobić to wędrując po polach DBGrid2.
>
> Teraz kod i prośba o podpowiedź bo nie bardzo wiem co robię żle.
>
> ////
> procedure TForm1.Button7Click(Sender: TObject);
> var x : integer;
> begin
> ADOQuery3.Connection:= AdoConnection1;
> AdoQuery3.SQL.Clear;
> DBGrid2.DataSource.DataSet.First;
> while not DBGrid2.DataSource.DataSet.Eof do
> begin
> for x:=0 to DBGrid2.DataSource.DataSet.Fields.Count -1 do
>
> begin
> ADOQuery3.SQL.Add('INSERT INTO grupy (GRUPA, NAZWA, RODZAJ, W_OPALOWA, STAWKA_A) VALUES (:grupa, :nazwa, :rodzaj, :w_opalowa, :stawka_a)'); // + DataSource1.DataSet.Fields[x].AsString );
>
> begin
> ADOQuery3.Parameters.ParamByName('GRUPA').Value:= DBGrid2.DataSource.DataSet.Fields[x].AsString;
> ADOQuery3.Parameters.ParamByName('NAZWA').Value:= DBGrid2.DataSource.DataSet.Fields[x].AsString;
> ADOQuery3.Parameters.ParamByName('RODZAJ').Value:= DBGrid2.DataSource.DataSet.Fields[x].AsString;
> ADOQuery3.Parameters.ParamByName('W_OPALOWA').Value:= DBGrid2.DataSource.DataSet.Fields[x].AsFloat;
> ADOQuery3.Parameters.ParamByName('STAWKA_A').Value:= DBGrid2.DataSource.DataSet.Fields[x].AsFloat;
>
> end;
>
> ADOQuery3.ExecSQL;
> DBGrid2.DataSource.DataSet.Next;
> end;
>
> end;
>
> kod prościutki niestetynie działa i nie mam pomysłu
>
> zamiast kodu między begin ....end dałem:
>
> AdoQuery3.Parameters.ParamByName('GRUPA').Value:= DBGrid2.DataSource.DataSet.FieldByName('grupa').AsString;
> AdoQuery3.Parameters.ParamByName('NAZWA').Value:= DBGrid2.DataSource.DataSet.FieldByName('nazwa').AsString;
> AdoQuery3.Parameters.ParamByName('RODZAJ').Value:= DBGrid2.DataSource.DataSet.FieldByName('rodzaj').AsString;
> AdoQuery3.Parameters.ParamByName('W_OPALOWA').Value:= DBGrid2.DataSource.DataSet.FieldByName('w_opalowa').AsFloat;
> AdoQuery3.Parameters.ParamByName('STAWKA_A').Value:= DBGrid2.DataSource.DataSet.FieldByName('stawka_a').AsFloat;
>
> i to działa - tylko dla pierwszego rekoru - to zresztą zrozumiałe. Gdzieś by tu wpleść x Proszę o jakąś podpowiedź, gdzie robię błąd.
>
> Prosze o wyrozumiałość i podpowiedź , nie oczekuję gotowca
> pozdrawiam
>
> Przemek
To proste. Pod różne pola wkładasz jedno i to samo:
ADOQuery3.Parameters.ParamByName('GRUPA').Value:= DBGrid2.DataSource.DataSet.Fields[x].AsString;
ADOQuery3.Parameters.ParamByName('NAZWA').Value:= DBGrid2.DataSource.DataSet.Fields[x].AsString;
ADOQuery3.Parameters.ParamByName('RODZAJ').Value:= DBGrid2.DataSource.DataSet.Fields[x].AsString;
czyli w pierwszym kroku pętli:
ADOQuery3.Parameters.ParamByName('GRUPA').Value:= DBGrid2.DataSource.DataSet.Fields[0].AsString;
ADOQuery3.Parameters.ParamByName('NAZWA').Value:= DBGrid2.DataSource.DataSet.Fields[0].AsString;
ADOQuery3.Parameters.ParamByName('RODZAJ').Value:= DBGrid2.DataSource.DataSet.Fields[0].AsString;
itd... czyli inaczej:
ADOQuery3.Parameters.ParamByName('GRUPA').Value:= DBGrid2.DataSource.DataSet.FieldByName('GRUPA').AsString;
ADOQuery3.Parameters.ParamByName('NAZWA').Value:= DBGrid2.DataSource.DataSet.FieldByName('GRUPA').AsString;
ADOQuery3.Parameters.ParamByName('RODZAJ').Value:= DBGrid2.DataSource.DataSet.FieldByName('GRUPA').AsString;
rozumiesz?
Paweł
Technical Details
Message-ID:
<34268902-e3a5-4655-a4e5-54389bcbcc49@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder1.iad1.usenetexpress.com!216.166.98.84.MISMATCH!border1.nntp.dca1.giganews.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!i7no270402qta.1!news-out.google.com!78ni7270itm.0!nntp.google.com!r185no425138ita.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailReferences:
<4f0ed382-541b-47ba-8b98-a5d18bcd269e@googlegroups.com>Show Full Headers
Complete Article Headers
X-Received: by 10.129.175.36 with SMTP id n36mr1989456ywh.30.1486022083362; Wed, 01 Feb 2017 23:54:43 -0800 (PST) X-Received: by 10.157.35.89 with SMTP id k25mr779004otd.11.1486022083317; Wed, 01 Feb 2017 23:54:43 -0800 (PST) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder1.iad1.usenetexpress.com!216.166.98.84.MISMATCH!border1.nntp.dca1.giganews.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!i7no270402qta.1!news-out.google.com!78ni7270itm.0!nntp.google.com!r185no425138ita.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.delphi.bazy-danych Date: Wed, 1 Feb 2017 23:54:42 -0800 (PST) In-Reply-To: <4f0ed382-541b-47ba-8b98-a5d18bcd269e@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=83.21.172.86; posting-account=8ND_mgoAAAD5J9y9fnaTB1Kcu7xKWk7Q NNTP-Posting-Host: 83.21.172.86 References: <4f0ed382-541b-47ba-8b98-a5d18bcd269e@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <34268902-e3a5-4655-a4e5-54389bcbcc49@googlegroups.com> Subject: Re: Kopiowanie , prośba o podpowiedź - kopiowanie pól z dbgrid From: zpksoft <zpksoft@op.pl> Injection-Date: Thu, 02 Feb 2017 07:54:43 +0000 Lines: 112 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit