AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi MsSql Daten in ClientDataSet schreiben
Thema durchsuchen
Ansicht
Themen-Optionen

MsSql Daten in ClientDataSet schreiben

Ein Thema von schlock · begonnen am 15. Sep 2004 · letzter Beitrag vom 16. Sep 2004
Antwort Antwort
schlock

Registriert seit: 3. Sep 2004
20 Beiträge
 
#1

MsSql Daten in ClientDataSet schreiben

  Alt 15. Sep 2004, 13:13
Hallo,
ich versuche hier schon seit Stunden die Daten einer MsSql - Tabelle in ein
ClientDataSet zu schreiben. Einiges hab ich auch schon geschafft
Delphi-Quellcode:
  
var
  query : TADOQuery;
begin
  query := TADOQuery.Create(NIL);
  query.Connection:= TADOConnection.Create(NIL);

  query.Connection.ConnectionString:= ' ... '; // Der war mir zu lange zum kopieren

  query.SQL.Add('SELECT * FROM ANTRAG');
  query.Open;
end;
Dieser Code läuft ohne Exceptions durch und die Verbindung steht auch da
query.connection.GetTableNames(tableNames) die richtigen Tabellen zurückliefert.

Aber wie komm ich jetzt an die Ergebnisse der Abfrage um sie ins ClientDataSet zu schreiben ??
Oder gibt es da vielleicht schon Methoden von TClientDataSet die das auf einen Schlag können??

Bin für jede Hilfe Dankbar.

Hilflos
schlock
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: MsSql Daten in ClientDataSet schreiben

  Alt 15. Sep 2004, 17:48
Welche Abfrage? Du hast doch deinem Query noch gar kein SQL-Statement mitgegeben, sondern fragst lediglich über die Methode GetTableNames die Tabellennamen deiner Datenbank ab.

Füge mal ein SELECT-Statement wie etwa
Code:
SELECT * FROM <Owner>.<Tabellenname>
wobei <Owner> meistens "dbo" ist, in der Eigenschaft SQL deiner Query ein und führe die Query mit
Code:
Query.Open
aus.

Damit du das Ergebnis deiner Abfrage dann ausgeben kannst benötigst du dann noch eine DataSource, die mit deiner Query verbunden ist und z.B. ein DBGrid, das mit der DataSource verbunden wird.

Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#3

Re: MsSql Daten in ClientDataSet schreiben

  Alt 15. Sep 2004, 18:48
Hi,

ja, Clientdatasets können daten aus einem Dataset, sowohl innerhalb eines Prozesses, als auch über Prozeß- und Rechnergrenzen hinweg, oder sogar über das Internet saugen und updaten.
- Füge einfach noch einen TDatasetprovider hinzu
- Wähle die Adoquery als Dataset aus (Beachte meine sonstigen Warnnungen Hier im Forum suchenTBetteradodataset)
- Wähle den Datasetprovider im Clientdataset aus
- Setze im Clientdataset Active auf true, und schon sind die Daten im Clientdataset

Grüsse
Woki
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: MsSql Daten in ClientDataSet schreiben

  Alt 16. Sep 2004, 07:32
Bei ADO wäre dieser Umweg über ClientDataset nicht nötig. Das ADO-Recordset kann auch als disconnected Dataset über Rechnergrenzen (auch z.B. über HTTP übers Internet). Beispiel im Entwickler-Forum
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#5

Re: MsSql Daten in ClientDataSet schreiben

  Alt 16. Sep 2004, 07:47
Zitat von Bernhard Geyer:
Bei ADO wäre dieser Umweg über ClientDataset nicht nötig. Das ADO-Recordset kann auch als disconnected Dataset über Rechnergrenzen (auch z.B. über HTTP übers Internet). Beispiel im Entwickler-Forum
Das ist natürlich richtig, daß MS hier schon vor geraumer Zeit nachgezogen hat.
Nur der Hinweis, daß es trotzdem Gründe gibt, dem Clientdataset den Vorzug zu geben.

Grüsse
Woki
  Mit Zitat antworten Zitat
schlock

Registriert seit: 3. Sep 2004
20 Beiträge
 
#6

Re: MsSql Daten in ClientDataSet schreiben

  Alt 16. Sep 2004, 09:32
Phantastisch,
klappt wunderbar.
Vielen Dank Woki.

Hier, für diejenigen die das auch mal machen müssen, noch der fehlende Quellcode:
Delphi-Quellcode:
var
  dataSetProvider: TDataSetProvider;
  ClientDataSet : TClientDataSet;
begin
  dataSetProvider:= TDataSetProvider.Create(NIL);
  dataSetProvider.DataSet:= query; // query kommt von obigem Beispiel
  ClientDataSet.SetProvider( dataSetProvider );
  ClientDataSet.Active:= TRUE;
end;
Ich benutze übrigens das Clientdataset als Abstraktionsschicht zwischen Datenbankstrukturen
und den Strukturen die mein Programm zur Darstellung benutzt, da ich gedenke später noch weitere
Datenbanken anzubinden.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz