![]() |
TADOCommand & TADODataSet (Recordset-Objekt -> TMemo)
Zitat:
Scheinbar hat das was mit einem Recordset-Objekt zu tun, wie es die Hilfe beschreibt... Habe jetzt so ein TADODataSet Object eingebaut, ADODataSet1.Recordset := ADOCommand1.Execute; eingefühgt, meckert auch net rum, aber wie bekomm ich den Rückgabewert aus der TADODataSet Komponente raus in ein MemoFeld???? ADODataSet1.IndexFieldCount hat sich auch von 0 auf 1 Verändert nach der Anweisung, also ist auch was gemacht worden... Finde aber nix um das nun in ein MemoFeld zu bekommen... Kann da wer helfen? MFG Keda |
Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
Ich komm damit immernoch nicht weiter :(
Brauch ich vielleicht noch eine Komponente? plz Help :? MFG Keda |
Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
Guten Morgen,
wenn die Daten aus der DB sowieso angezeigt werden sollen würde ich gleich TADOQuery verwenden. (Nicht vergessen die Abfrage durch Open auszuführen) Dann wird noch ein TDataSource-Object gebraucht (Registerlasche "Datenzugriff") Als DataSet wird dort die TADOQuery eingestellt. Der Zugriff auf die Daten der Datenbank geschieht über die DBxxx Komponenten. In diesem Fall wäre das also DBMemo. Hier muß man die TDataSource Komponente und das gewünschte Feld einstellen. und es sollte was zu sehen sein. :? Niels |
Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
Zitat:
Ich versuch es mal so umzusetzen... Aber vielleicht gibts ja doch ne Möglichkeit die Daten aus dem Recordset des TADODataSets zu hollen, den drinne sind Sie ja scheinbar :P Die befehle werden ja ausgeführt, seh es ja auf dem Datenbankserver, deshalb kommt ja auch was zurück und diese Rückgabewerte sind im Recordset gespeichert nur ka wie ich die da rausbekomm rausbekomm... Das einzigste was mir halt fehlt, ist die da rauszubekommen und auf ein normales Memofeld auszugeben :P MFG Keda |
Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
Schau dir mal die Methoden FindField und FieldByName sowohl bei TAdoDataSet als auch TAdoQuery in der OH an, dann solltest du keine Probleme mehr haben, auf die Daten zuzugreifen.
Grüße Mikhal |
Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
Ich werds versuchen :P
Arbeite nur zum ersten mal mit SQL-Datenbanken und hab daher 0 Ahnung davon ^^ Edit: Dafür brauch ich aber ein Feldnamen... Den hab ich aber nicht, dass ist ja das Problem... Ich weiß nur, das sich das FieldCount von 0 auf 1 erhöht hat anch ausführen der Anweisung, also ist ein Field hinzugekommen, aber wie bekomm ich den namen vom Feld? MFG Keda |
Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
Zitat:
warum kennst Du denn nicht die Feldnamen der Tabelle? |
Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
Öhm woher denn?
Nach:
Delphi-Quellcode:
erhöht sich ADODataSet1.FieldCount von 0 auf 1...
ADODataSet1.Recordset := ADOCommand1.Execute;
wo soll ich da den Feldnamen herkommen??? Versteh nur noch Bahnhof.... MFG Keda |
Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
So kannst Du die Feldnamen einer Tabelle übrigens auslesen:
Ich verwende zur Anzeige eine TListBox.
Delphi-Quellcode:
test Ist der Name der Tabelle.
procedure TForm1.Button1Click(Sender: TObject);
begin ListBox1.Clear; ADOConnection1.GetFieldNames('test',ListBox1.Items); end; |
Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
Zitat:
Das problem was ich hab ist doch, das im Recordset von der TADODataSet komponente Sachen drinne habe die ich gern hätte, wie bringen mir da Feldnamen von der Datenbank weiter? Versteh ich nicht... Oder werden die Rückgabewerte in der Datenbank gespeichert und nicht an mich gesendet? MFG Keda |
Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
Sorry,
das hatte ich überlesen :wall: Mit dem ADODataSet und ADOCommand habe ich noch nicht gearbeitet. Ich verwende auch immer Querys für meine Abfragen. |
Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
passiert :wink:
Naja vielleicht hätte ich auch das alles besser beschreiben sollen was ich will :) Also mach ich das mal glatt :P Also solange ja die xpsql70.dll und die xplog70.dll bei der MS SQL datenbank vorhanden sind gibt es z.b. den Befehl xp_cmdshell... wenn ich jetzt in meinem TADOCommand.CommandText den string xp_cmdshell "dir c:\" übergebe und dann ADODataSet1.Recordset := ADOCommand1.Execute; aufrufe, müßte das, was ja in ner normalen win-CMD als Ausgabe bei dem befehl "dir c:\" kommt im Recordset gespeichert sein, oder sollte es, so wie ich es verstanden hab... Aber wie bekomm ich das nu in nen TMemo rein? Das der Befehl ausgeführt wird weiß ich, da beim Befehl: xp_cmdshell "echo Esgeht >> C:\esGeht.txt" diese EsGeht.txt ja auch angelegt wird... Kann mir da wer helfen? MFG Keda |
Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
In deinem CommandText sollte doch eine SQL-Anweisung stehen. Mach uns doch mal schlau: sende uns deinen CommandText, damit wir dir weiterhelfen können.
Im übrigen solltest du dich mal grundsätzlich mit der Datenbankprogrammierung auseinandersetzen. Bei ![]() Grüße Mikhal |
Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
Zitat:
Vorher habe ich abe diese Aufgabe zu lösen :? Nur das Problem hier an sich, hat ja noch nicht wirklich was mit Datenbank-Programierung zu tun, aber irgend wie ja doch, da das ja per Datenbank pssiert... MFG Keda |
Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
Da warst du schneller...
Aber warum willst du einen DOS-Befehl über die Shell des SQL-Servers in einem Memo-Feld darstellen... Grüße Mikhal |
Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
Weils meine Aufgabe ist das zu realisieren... :wall:
Warum ich die bekomme? ka vieleicht um zu lernen, dass man bei falscher konfiguration von SQL-Servern Sehr große Sicherheitslöcher hat? Ka da fragst mich zuviel :wink: MFG Keda |
Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
Zitat:
SQL-Befehle ohne Parameter und ohne Rückgabemenge werden am Besten direkt über die Connection ausgeführt:
Delphi-Quellcode:
SQL-Befehle mit Parameter aber ohne Rückgabemenge werden über TADOCommand ausgeführt:
ADOConnection1.Execute('DELETE FROM TABLE test');
Delphi-Quellcode:
Stored Procedures mit Rückgabemenge werden über TADOStoredProc ausgeführt.
ADOCommand1.Commandtext := 'UPDATE test SET Status=5 WHERE CustId=:CustId';
ADOCommand1.Parameters.ParamValues['CustId'] := '4711'; ADOCommand1.Execute;
Delphi-Quellcode:
Views und SELECT-Abfragen werden über TADOQuery abgefragt:
ADOStoredProc1.Open; // Open, da Resultset erwartet wird
// alle Daten auslesen und als Message anzeigen: s := 'Daten:'#13#10; while not ADOStoredProc1.Eof do begin s := s + ADOStoredProc1['Kundennummer']+#13#10; ADOStoredProc1.Next; end; ShowMessage(s); Beispiel schenk ich mir. |
Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
Ich weiß :wink:
Habe schon die ganzen Komponenten studiert... Aber xp_cmdshell ist keine Stored Procedure sondern ein SQL-Befehl... Und mit was führe ich nun SQL-Befehle mit Rückgabewert aus? Finde ich nicht in deiner Liste... Aber soweit ich der Delphi-Hilfe folgen konnte auch mit TADOCommand, so wie ich es ja auch gemacht habe... Habe das TADOCommand auch mit dem TADODataSet.RecordSet verbunden, damit da irgendwas mit dem Rückgabewert passiert... Nun tut sich da auch was, nur wie bekomm ich den nu raus? Nur das interessiert mich im Moment und das war auch die Frage... Sry Wenn ich ein bischen knurrig erschein, aber Nicht wirklich irgendein Post konnte mir irgendwie weiterhelfen... Sie verweisen auf Sachen, die ich gar nicht machen will... Es ist zwar ne Hilfe für später, aber meine Aufgabe Im Moment ist halt diese... Vielleicht ist das auch mit ADO - Komponenten nicht zu realisieren, dann steck ich hier in einer Sackgasse... Aber das hat mir auch noch keiner gesagt... Nun sitz ich hier schon seit Tagen an dem Problem und dreh mich nur im Kreis und komm allein nicht weiter und das auch noch im Urlaub... Es läßt mir einfach keine Ruh, dass ich das net hinbekomm :cry: Ausgeführt bekomm ich es, einen Rückgabewert bekomm ich aber net zu Gesicht, obwohl ich weiß das er da ist... :wall: MFG Keda |
Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
Hai Keda,
hast Du dein TADODataSet mit einer TDataSource verbunden? Ich habe das eben mal getestet und es geht wunderbar. Wenn ich z.B. diesen Befehl ausführe:
Delphi-Quellcode:
Habe ich anschließen alle Dateien in meinem DBGrid.
ADOCommand1.CommandText := 'xp_cmdshell "dir *.exe"';
ADODataSet1.Recordset := ADOCommand1.Execute; |
Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
nö hab ich net, hab auch ka wie das geht :?
aber wenn das so geht, ist das ja schon mal ein anfang ^^ Mal schaun ob ichs hinbekomm... vielleicht kannst du genau erklären wie ich das auch hinbekomm ^^ MFG Keda |
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. |
Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
Zitat:
Dann nimm mal ein TADODataset und verbinde dieses mit einer DataSource und einem DBGrid. Natürlich auch mit einer ADOConnection verbinden.
Delphi-Quellcode:
Bei mir tut's. :dancer:
ADODataset1.CommandText := 'EXECUTE master..xp_cmdshell '+QuotedStr('dir *.*');
ADODataset1.Active := True; |
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; |
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 |
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 |
Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
Zitat:
|
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 |
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; |
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 |
Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
Zitat:
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? |
Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
Zitat:
Kannst du mir sagen wo ich das finde bzw. herbekomme? Vielleicht wo downloaden? Die ist bestimmt bei Win2003-Server mit dabei oder? dann würde ich aber auch erst übernächste Woche drankommen, da ich grad Urlaub habe :-D oder sollte... :lol: Ich lese zur Zeit auch nur Irgendwelche Tutorials ausm I-Net, hätte mir auch schon nen Buch gekauft, bin aber Immomento net gerade flüssig :( Und dann wüst ich net mal welches gut wär, den >2 werd ich mir erstrecht net leisten können... Und bis jetzt hab ich immer mehr als ein Buch gekauft, da das erste bei mir irgendwie immer ein ... Griff war :P --------- Das xp_cmdshell hat zumindest auch ohne Master.. Fumktioniert :) zumindest auf den Testserver, wo ich testen darf ^^ Wie gesagt hab erst vor ein paar Tagen mit SQL allgemein begonnen :P nen eigenen lokalen SQL-Server hab ich auch noch nicht zum testen, aber das kommt bald :) Dann seh ich wenigstens gleich was ich anrichte :wink: Achso würde zum lokalen testen auch ein MySQL-Server reichen? Im Grunde müste das doch das gleiche sein oder +- ein paar Ausnahmen? MFG Keda |
Re: TADOCommand & TADODataSet (Recordset-Objekt -> TM
Ok habe was gefunden:
![]() Den werd ich mal Installieren :) Mal schaun was es bringt :P edit: irgendwie funzt da was net :/ MFG Keda |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz