Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TADOCommand & TADODataSet (Recordset-Objekt -> TMemo)? (https://www.delphipraxis.net/30351-tadocommand-tadodataset-recordset-objekt-tmemo.html)

Sharky 24. Sep 2004 11:03

Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
 
Ganz einfach:
Ziehe auf deine Form eine TDataSource (Registerkarte: Datenzugriff)
Trage im OI unter "DataSet" dein ADODataSet ein.
Setze jetzt noch ein TDBGrid auf deine Form. Trage bie diesem unter "DataSource" deine DataSource1 ein.

shmia 24. Sep 2004 11:03

Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
 
Zitat:

Zitat von Kedariodakon
Aber xp_cmdshell ist keine Stored Procedure sondern ein SQL-Befehl...

AHA !
Dann nimm mal ein TADODataset und verbinde dieses mit einer DataSource und einem DBGrid.
Natürlich auch mit einer ADOConnection verbinden.
Delphi-Quellcode:
ADODataset1.CommandText := 'EXECUTE master..xp_cmdshell '+QuotedStr('dir *.*');
ADODataset1.Active := True;
Bei mir tut's. :dancer:

Sharky 24. Sep 2004 11:06

Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
 
Halt,
kommando zurück ;-)
Es geht zwar so wie ich es beschrieben habe aber Du wolltest es ja in einem TMemo. Das ist dann noch einfacher.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ADOCommand1.CommandText := 'xp_cmdshell "dir *.exe"';
  ADODataSet1.Recordset := ADOCommand1.Execute;
  ADODataSet1.First;
  while not (ADODataSet1.Eof) do
  begin
    Memo1.Lines.Add(ADODataSet1.Fields.FieldByName('output').AsString);
    ADODataSet1.Next;
  end;
end;

Kedariodakon 24. Sep 2004 11:12

Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
 
JUHU es hat fuktioniert ^^
zumindest das mit dem DBGrid dingens ..
Da steht ja nu auch wie die Tabelle heißt :)

Danke Jungens, da wär ich nie allein drauf gekommen!!!
dieses dumme DataSource dingens aber auch :P

Aufgabe erfüllt! Ich geb einen aus :P :cheers:

MFG Keda

Kedariodakon 24. Sep 2004 11:18

Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
 
WOW das mit dem Memofeld geht ja besser als ich dachte ^^
Und das auch noch ohne Source Object :)

So nu erst mal Pause :)

Dann werd ich mal das alles analysieren ^^

Ich hab gestern auch so ähnlich rumhantiert, hatte aber nur Fehler annen kopfgeworfen bekommen...
Hatte ja keine Ahnung wie ich an den Tabellennamen hätte kommen sollen :)

gibts da irgendwas wie man hätte drankommen können ohne das im Grid abzulesen? :P


MFG Keda

Sharky 24. Sep 2004 11:23

Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
 
Zitat:

Zitat von Kedariodakon
...gibts da irgendwas wie man hätte drankommen können ohne das im Grid abzulesen? ..

In der Onlinehilfe des MS-SQL steht es leider auch nicht. Darum habe ich den Befehl einfach im Query-Analyser des SQL-Servers ausgeführt. Schon stand der Name des Feldes (nicht der Tabelle) da ;-)

Kedariodakon 24. Sep 2004 11:29

Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
 
ka was nen Query-Analyser ist, aber das werd ich auch noch lernen, beschäftige mich ja gerade erst mit der SQL-Problematik :)
ManManMan

bin mal gespannt, was für Probleme noch auf mich zu kommen werden :P

Also Danke erstmal! :thumb:
Wie gesagt da wär ich nie, wirklich NIE allein drauf gekommen... :pale:

Also nochmal Special THX to Shmia & Sharky the SQL Specialists!!! :spin2: :spin2: :spin2:


MFG Keda

Sharky 24. Sep 2004 11:50

Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
 
Hai,

noch ein kleiner Nachtrag ;-)
Wenn Du xp_cmdshell auf dem Server ausführst ist der Feldname absolut egal ;-)
Du kannst auf Rückgabe werte auch über den Feldindex zugreifen. Da bei xp_cmdshell maximal eine Spalte zurück gegeben wird geht es also auch ganz locker so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ADOCommand1.CommandText := 'EXECUTE master..xp_cmdshell ' + QuotedStr ('dir *.exe');
  ADODataSet1.Recordset := ADOCommand1.Execute;
  ADODataSet1.First;
  while not (ADODataSet1.Eof) do
  begin
    Memo1.Lines.Add(ADODataSet1.Fields.Fields[0].AsString); //Feld 0 (das erste) der Ergebnissmenge
    ADODataSet1.Next;
  end;
end;

Kedariodakon 24. Sep 2004 12:05

Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
 
:wiejetzt: Öhm warum hast du nun EXECUTE master..xp_cmdshell genommen statt nur xp_cmdshell ???

hat das nen Grund?

MFG Keda

Sharky 24. Sep 2004 16:20

Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
 
Zitat:

Zitat von Kedariodakon
:wiejetzt: Öhm warum hast du nun EXECUTE master..xp_cmdshell genommen statt nur xp_cmdshell ...

Das "Execute" kannst Du auch weglassen.
das master.. ist wichtig weil diese Funktion nur in dieser "Tabelle" vorhanden ist.
Hast Du die möglichkeit die OnlineHilfe des MS-SQL-Servers zu lesen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:49 Uhr.
Seite 3 von 4     123 4      

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