Article View: pl.comp.lang.delphi.bazy-danych
Article #82719Re: Kopiowanie , prośba o podpowiedź - kopiowanie pól z dbgrid
From: Krzysztof Szyszka
Date: Wed, 01 Feb 2017 17:44
Date: Wed, 01 Feb 2017 17:44
58 lines
3575 bytes
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-mailReferences:
<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