![]() |
Datenbank: SAP DB • Version: 7.4 • Zugriff über: ODBC
einfache Datenbankanwendung ODBC SQL
Hallo zusammen,
ich suche einen einfachen Einstieg bzgl. DB Abfrage über SQL. Ich will einfach ein beliebigs SQL Statement (select, update, inset, d...) auf eine beliebige DB absetzen, die über ODBC erreichbar ist. Falls es ein Select Statement ist, soll das Erbebnis in einer Liste angezeigt werden. Die Connection zur Datenbank über TADOConnection konnte ich konfigurieren. Aber dann verliessen sie ihn. Kann jemand helfen? Danke, Raena. :thumb: |
Re: einfache Datenbankanwendung ODBC SQL
Wie wäre es mit einem TADODataSet?
|
Re: einfache Datenbankanwendung ODBC SQL
ok, ich habe ADODATAset eingebunden, verbunden mit ADO Connection und in Command Text ein
SQL eingetragen. Wie kriege ich jetzt die Werte in eine Liste? |
Re: einfache Datenbankanwendung ODBC SQL
Du kannst die Komponente entwder per DataSource mit einer datensesitiven Komponente verbinden oder mit .First .Next durchsteppen
|
Re: einfache Datenbankanwendung ODBC SQL
Bedenke das viele Firmen nur den Zugriff auf eine SAP-DB nur über die Offizielle SAP-Schnittstelle erlauben :!: Zugriff auf die DB mittels ODBC/... ist verboten und könnte dir gewaltig viel Ärger bereiten. Also bitte erst in der (SAP-)IT-Abteilung nachfragen ob du über diesen Weg zugreifen darfst. Maximal wird dir hier der Lesezugriff erlaubt. Denn wenn du mal versehentlich einen Datensatz zu viel löschen/ändern würdest könntest du viel zu viel Schaden anrichten.
|
Re: einfache Datenbankanwendung ODBC SQL
prinzipielle funktioniert das Ganze jetzt. Ich habe nur ein Problem.
Der Wert ADODataSet1.Active:=true; sollte ja true sein damit was angezeigt wird. Wenn ich die SQL aendere, wird der Wert automatisch auf false gesetzt. Deswill ich den Wert im Quell Code automatisch true setzen. Da stürzt die Kiste aber ab. Raena.
Delphi-Quellcode:
unit DBtest;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ADODB, Grids, DBGrids, DB; type TForm2 = class(TForm) ADOConnection1: TADOConnection; ADODataSet1: TADODataSet; DataSource1: TDataSource; DBGrid1: TDBGrid; private { Private declarations } public { Public declarations } end; var Form2: TForm2; testervar:integer; ADODataSet1:TADODataSet; implementation {$R *.dfm} begin testervar:=33; ShowMessage('tma ' + inttostr(testervar)); ADODataSet1.Active:=true; end. |
Re: einfache Datenbankanwendung ODBC SQL
Was sollen die ganzen globalen Variablen? Wieso wird ein begin...end-Block verwendet in dessen Bereich nicht initialisierte Referenzen verwendet werden.
|
Re: einfache Datenbankanwendung ODBC SQL
So, ich habe jetzt mal alles raus geschmissen was ich nicht brauche.
Das Programm läuft durch. An welcher Stelle muss ich nun den Befehl "ADODataSet1.Active:=true;" absetzen?
Delphi-Quellcode:
program Databaseprj;
uses Forms, DBtest in 'DBtest.pas' {Form2}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm2, Form2); Application.Run; end. unit DBtest; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ADODB, Grids, DBGrids, DB; type TForm2 = class(TForm) ADOConnection1: TADOConnection; ADODataSet1: TADODataSet; DataSource1: TDataSource; DBGrid1: TDBGrid; private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} end. |
Re: einfache Datenbankanwendung ODBC SQL
scheint ja doch nicht so einfach zu sein :pale:
|
Re: einfache Datenbankanwendung ODBC SQL
|
Re: einfache Datenbankanwendung ODBC SQL
Hallo,
du scheinst alles durcheinander zus schütteln um dann zu schauen was rauskommt. ODBC ADO und SQL weisst du was sich dahinter verbirgt? ADO und ODBC schliessen sich fast zwangsläufig gegenseitig aus. Dir scheint es grundsätzlich an Wissen zu fehlen. Bitte lies dir erstmal Kinzlers Vorschlag durch. Werd dir klar was du eigentlich willst versuchs und stell dann deine Fragen. Grüsse Rainer |
Re: einfache Datenbankanwendung ODBC SQL
Warum schließen sich ADO und ODBC aus? ADO ist mehr oder weniger der Nachfolger von ODBC und ermöglicht die Verwendung von ODBC-Treibern für den Zugriff auf DBMS.
|
Re: einfache Datenbankanwendung ODBC SQL
Zitat:
Als Delphi-User gibt/gab es folgende Schichtung der Zugriffstechniken a, Anwendung -> BDE -> ODBC -> ODBC-Treiber -> Datenbank (Endgültiges Ende mit Delphi 2008 angekündigt) b, Anwendung -> BDE -> SQL-Links -> SQL-Links-Treiber -> Datenbank (Seit Jahren abgekündigt) c1, Anwendung -> dbGO/ADOExpress -> ADO -> OLE DB-Treiber -> Datenbank c2, Anwendung -> dbGO/ADOExpress -> ADO -> OLE DB-Treiber für ODBC -> ODBC-Treiber -> Datenbank d, Anwendung -> dbExpress -> dbExpress-Treiber (Teilweise Zugriff auf OLE DB je nach DBMS) -> Datenbank -> e, Anwendung -> native Zugriffskomponenten (ZEOS, CoreLabs, AnyDac) (-> teilweise native Treiber) -> Datenbank Je länger (Anzahl der Zwischenstufen) desto höher sind di Konfigurationsaufwände und desto höher die Wahrscheinlichkeit von Problemen (Treiber, Versionskonflikte, ...) |
Re: einfache Datenbankanwendung ODBC SQL
Aber nicht ganz optimal heisst nicht sich ausschliessen.
|
Re: einfache Datenbankanwendung ODBC SQL
Zitat:
Zitat:
|
Re: einfache Datenbankanwendung ODBC SQL
Du nicht.
|
Re: einfache Datenbankanwendung ODBC SQL
ok Leute, vielen Dank. Mein Programm läuft jetzt erst mal.
Ich will jetzt das Teil umstellen auf a, Anwendung -> BDE -> ODBC -> ODBC-Treiber -> Datenbank D.h. weg von ADO. Was ist denn das Pendant von "TADOConnection" Hier mein Programm, was funktioniert, euch aber nicht gefallen wird :P :P
Delphi-Quellcode:
program Databaseprj;
uses Forms, DBtest in 'DBtest.pas' {Form2}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm2, Form2); Application.Run; end. unit DBtest; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ADODB, Grids, DBGrids, DB, StdCtrls; type TForm2 = class(TForm) ADOConnection1: TADOConnection; ADODataSet1: TADODataSet; DataSource1: TDataSource; DBGrid_SQL_Result: TDBGrid; btn_Query: TButton; Edt_SQL_Input: TEdit; procedure btn_QueryClick(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.btn_QueryClick(Sender: TObject); begin {showmessage('test');} ADODataSet1.active:=false; ADODataSet1.CommandText:=Edt_SQL_Input.Text; ADODataSet1.active:=true; end; procedure TForm2.FormCreate(Sender: TObject); begin Edt_SQL_Input.Text:='select * from '; end; end. |
Re: einfache Datenbankanwendung ODBC SQL
noch ne Frage,
wie kann ich das machen, dass der Conncetion String nicht fix ist, sondern dass ein Fenster aufpoppt mit den vorhandenen ODBC Einträgen in dem man dann die entsprechenden Verbindung auswählen kann? Weiss jemand das? Danke. |
Re: einfache Datenbankanwendung ODBC SQL
Zitat:
|
Re: einfache Datenbankanwendung ODBC SQL
ok meinetwegen mit ADO, aber was ist denn dann an meinem Programm falsch?
Auf den ersten Click funktioniert es. |
Re: einfache Datenbankanwendung ODBC SQL
Hallo,
ADODB („ActiveX Data Objects Databases“, meist, auch hier im weiteren Text, ADO genannt) ist der Nachfolger von DAO. Im Gegensatz zu DAO welches in Grundgerüst hauptsächlich für den Einsatz mit Jet-Datenbanken wie Access oder Excel konzipiert ist und zu anderen Datenquellen meist über ODBC gehen muß stützt sich ADO auf die OLEDB-Treiber welche die ODBC-Treiber mehr und mehr ablösen. OLEDB bietet eine höhere Performance und oft auch mehr Möglichkeiten für den Entwickler. Über ADO lassen sich fast alle geläufigen Datenbanken zugreifen, egal ob Access, SQL-Server, Oracle, Informix und viele andere. Auch ODBC-Verbindungen, lassen sich problemlos verwenden, sind aber durch OLEDB eigentlich überflüssig. Grüsse Rainer (Hab mich vielleicht falsch ausgedrückt! Wollte eigentlich nur damit sagen, dass er sich erst mal überlegen soll was er eigentlich will.) |
Re: einfache Datenbankanwendung ODBC SQL
Hallo WS1976.
Ok, ich denke dann wird meine Anwendung so wie sie ist auch so funktionieren. Ich suche jetzt nur noch nach einer Möglichkeit dem benutzer der selektieren der entsprechenden Datenbank zu erleichtern, z.B. in dem ich dem User die Liste mit vorhandenen ODBC Eintägen zeige und die entsprechnede Verbindung vom User ausgewählt werden kann. Hat da jemand eine Ahnung? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:11 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-2025 by Thomas Breitkreuz