🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

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

#82719
From: Krzysztof Szyszka
Date: Wed, 01 Feb 2017 17:44
58 lines
3575 bytes
Użytkownik "lordbz"  napisał w wiadomości grup
dyskusyjnych:d0312858-627e-46e0-9c41-6ceada7756df@googlegroups.com...

> Miab, Zenon - dzięki - podam teraz kod który działa ale najpierw przypomnę założenie.
> 1-user połączył się z MSSQL - tam ma pusta tabelkę (zrobione)
> 2-user otwiera sobie plik dbf (db itp) lokalnie w DBGRid2 (zrobione)
> 3-naciśnięcie klawisza - przekopiowanie pól z DBGrid2 do tabeli na serwerze
>
> KOD który działa:
[...]
> 3 - reasumując kod jest do poprawki
> Daję cały bo może komuś się przyda a dodatkowo uważam że na tym to polega (teraz ktoś mnie zjedzie
> ,
> coś podpowie, da kawałek i problem rozwiązany). Ponadto przeszukałem grupę i dokładnie takiego
> (rozwiązanego) problemu nie ma - zaznaczam lecimy po DBGrid.
>
> Proszę o uwagi

Skoro prosisz o uwagi to:
1. Ten kod jest mocno przekombinowany
2. Do wykonania tego zadania DBGridy nie mają znaczenia (są jedynie wizualizacją procesu)
3. Skoro masz już gotowe DataSety opisane w punktach 1 i 2, to po co Ci jeszcze ADOQuery3?
4. Wszystko co musisz zrobić, to skopiować zawartość drugiego DataSetu do pierwszego o takiej
samej strukturze, a po wykonaniu kopiowania zatwierdzić dane na serwerze (jeśli potrzeba).

Do skopiowania DataSetów wystarczy wywołać prostą *uniwersalną* procedurę:

procedure TMainForm.CopyDataSet(SourceDataSet, TargetDataSet: TDataSet);
var
  I: Integer;
begin
  if SourceDataSet.Fields.Count <> TargetDataSet.Fields.Count then
  begin
    ShowMessage('Niezgodność tabeli źródłowej i docelowej!');
    Exit;
  end;

  SourceDataSet.First;
  while not SourceDataSet.Eof do
  begin
    TargetDataSet.Append;
    for I := 0 to SourceDataSet.Fields.Count-1 do
      TargetDataSet.Fields[I].Value := SourceDataSet.Fields[I].Value;
    TargetDataSet.Post;
    SourceDataSet.Next;
  end;
end;

Warunkiem poprawności działania jest oczywiście zgodność kolejności pól w obu DataSetach.

-- 
pozdrowienia
Krzysztof Szyszka, X-Files Software
Developer of X-DBGrid Component
Embarcadero Technology Partner
http://www.x-files.pl/
Join to "Delphi X-DBGrid Component Community"
https://plus.google.com/#communities/100842098152269100547 
Technical Details
Message-ID: <o6t6pq$o7i$1@node2.news.atman.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
References: <4f0ed382-541b-47ba-8b98-a5d18bcd269e@googlegroups.com> <o6lqs9$kn0$1@node2.news.atman.pl> <813fa353-f246-4b33-8c1f-d12a0dff7841@googlegroups.com> <o6nsnk$p54$1@node1.news.atman.pl> <58919a3e$0$15192$65785112@news.neostrada.pl> <d0312858-627e-46e0-9c41-6ceada7756df@googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
From: "Krzysztof Szyszka" <nomail@gazeta.pl>
Newsgroups: pl.comp.lang.delphi.bazy-danych
Subject: Re: Kopiowanie , prośba o
 podpowiedź - kopiowanie pól z dbgrid
Date: Wed, 1 Feb 2017 18:44:20 +0100
Organization: ATMAN - ATM S.A.
Lines: 59
Message-ID: <o6t6pq$o7i$1@node2.news.atman.pl>
References: <4f0ed382-541b-47ba-8b98-a5d18bcd269e@googlegroups.com> <o6lqs9$kn0$1@node2.news.atman.pl> <813fa353-f246-4b33-8c1f-d12a0dff7841@googlegroups.com> <o6nsnk$p54$1@node1.news.atman.pl> <58919a3e$0$15192$65785112@news.neostrada.pl> <d0312858-627e-46e0-9c41-6ceada7756df@googlegroups.com>
NNTP-Posting-Host: 85-222-28-64.dynamic.chello.pl
Mime-Version: 1.0
X-Trace: node2.news.atman.pl 1485971066 24818 85.222.28.64 (1 Feb 2017 17:44:26 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Wed, 1 Feb 2017 17:44:26 +0000 (UTC)
In-Reply-To: <d0312858-627e-46e0-9c41-6ceada7756df@googlegroups.com>
X-Priority: 3
X-MSMail-Priority: Normal
Importance: Normal
X-Newsreader: Microsoft Windows Live Mail 16.4.3528.331
X-MimeOLE: Produced By Microsoft MimeOLE V16.4.3528.331
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit