🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi.bazy-danych
Article #82721

Re: Kopiowanie , prośba o podpowiedź - kopiowanie pól z dbgrid

#82721
From: zpksoft
Date: Thu, 02 Feb 2017 07:54
82 lines
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-mail
References: <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