Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Datenmanipulation (ODBC/Access) (https://www.delphipraxis.net/129037-datenmanipulation-odbc-access.html)

LuCSteR 11. Feb 2009 14:31

Datenbank: MS Access • Version: 2003 • Zugriff über: ODBC

Datenmanipulation (ODBC/Access)
 
Hi,

ich soll eine Applikation schreiben, die Daten aus einer (noch) lokalliegenden Access Datenbank auslesen und manipulieren können sollte.
Im FormCreate verbinde ich mit der Datenbank, was auch klappt. Auch habe ich über ein SQLQuery und einem DataSource Tabellen/Tabellenspalten in eine DBGrid ausgeben lassen können. Mein Problem ist jetzt:

Wie kann ich Daten manipulieren (DELETE, INSERT INTO, UPDATE,..)? Bzw besser, welche Schritte sind zu tun, das diese Queries auch umgesetzt werden? In der Quelldatenbank, nicht nur im DBGrid.

Ich verstehe da den Zusammenhang noch nicht ganz. Was auch nicht geklappt hat, war eine Systemtabelle anzuzeigen :/

Struktur:

ODBCConnection1 --> SQLTransaction1
ODBCConnection1 --> SQLQuery1 --> DataSource1 --> DBGrid1

Quasi müssten die Informationen, die im DataSource (durch Query gespeist) sind, an die Datenbak gesendet werden. Sicherlich über die SQLTransaction. Aber wie?

Mein Code bisher:
Delphi-Quellcode:
//Benutzer-DSN Name
ODBCConnection1.DatabaseName:='test1';

//wichtig für Queries
SQLQuery1.UsePrimaryKeyAsKey:=false;
SQLQuery1.Active:=true;

//Connect
ODBCConnection1.Connected:=true;
Grüße

khh 11. Feb 2009 14:34

Re: Datenmanipulation (ODBC/Access)
 
Zitat:

Zitat von LuCSteR
Hi,

ich soll eine Applikation schreiben, die Daten aus einer (noch) lokalliegenden Access Datenbank auslesen und manipulieren können sollte.
Im FormCreate verbinde ich mit der Datenbank, was auch klappt. Auch habe ich über ein SQLQuery und einem DataSource Tabellen/Tabellenspalten in eine DBGrid ausgeben lassen können. Mein Problem ist jetzt:

Wie kann ich Daten manipulieren (DELETE, INSERT INTO, UPDATE,..)? Bzw besser, welche Schritte sind zu tun, das diese Queries auch umgesetzt werden? In der Quelldatenbank, nicht nur im DBGrid.

Ich verstehe da den Zusammenhang noch nicht ganz. Was auch nicht geklappt hat, war eine Systemtabelle anzuzeigen :/

Struktur:

ODBCConnection1 --> SQLTransaction1
ODBCConnection1 --> SQLQuery1 --> DataSource1 --> DBGrid1

Quasi müssten die Informationen, die im DataSource (durch Query gespeist) sind, an die Datenbak gesendet werden. Sicherlich über die SQLTransaction. Aber wie?

Mein Code bisher:
Delphi-Quellcode:
//Benutzer-DSN Name
ODBCConnection1.DatabaseName:='test1';

//wichtig für Queries
SQLQuery1.UsePrimaryKeyAsKey:=false;
SQLQuery1.Active:=true;

//Connect
ODBCConnection1.Connected:=true;
Grüße

indem du das sqlstatement übergibst:
Delphi-Quellcode:
sqlQuery1.sql.clear;
sqlQuery1.sql.add('select blabla ' );
EDIT: funktioniert natürlich auch mit update, insert usw.

gruss KH

[edit=mkinzler]Fehlende Tags ergänzt Mfg, mkinzler[/edit]

HaJo 11. Feb 2009 14:53

Re: Datenmanipulation (ODBC/Access)
 
Normalerweise macht man das mit:
Zitat:

Delphi-Quellcode:
         try
            SQLQuery1.post;
         except
            SQLQuery1.Cancel;
         end;

Aber Vorsicht, nicht jede SQL-Komponente ist zum ändern gedacht. Manche sind von Hause aus nur lesbar. Das Zauberwort ist hier "RequestLive". Ist diese Eigenschaft vorhanden und auf TRUE gesetzt, können auch im Grid Daten geändert werden.

Dein Satz:
Zitat:

Wie kann ich Daten manipulieren (DELETE, INSERT INTO, UPDATE,..)? Bzw besser, welche Schritte sind zu tun, das diese Queries auch umgesetzt werden? In der Quelldatenbank, nicht nur im DBGrid.
legt nahe, das Du nicht allzu viel Erfahrung mit Datenbanken hast. Kann das sein?

Das was Du da beschreibst sind keine Queries(Fragen) sondern ausführbare Statements(Befehle) die im Verbund mit entsprechenden Daten an jede Datenquelle gesandt werden können.

Die würden dann abgeschlossen mit:
Zitat:

Delphi-Quellcode:
        IF not SQLQuery1.Prepared then
            SQLQuery1.Prepare;
         TRY
            SQLQuery1.ExecSQL
         EXCEPT
         END;

[edit=mkinzler]Auch Profis sollten Delphi-Tags verwenden Mfg, mkinzler[/edit]

LuCSteR 11. Feb 2009 15:00

Re: Datenmanipulation (ODBC/Access)
 
@Hajo:

Ich arbeite das erste mal mit einer Datenbank. Die Theorie hatte ich in der Vorlesung, was aber nicht weiterhilft bei meinem Problem.

Ich bin davon ausgegangen, das eine SQLTransaction nicht nur Daten holen, sondern auch senden kann. Also Manipulationan der OriginalDB möglich ist.
Bin ja shconmal froh, das ich eine Verbindung aufbauen und Daten auslesen konnte.

Wie läuft denn das ab mit der Manipulation?
Ein Suchwort würde mich auch glücklich machen. Vll. werde ich ja fündig :)

Im Prinzip will ich mit meiner Applikation nur Daten selktieren und manipulieren in der MS Access DB.

Grüße

HaJo 11. Feb 2009 15:06

Re: Datenmanipulation (ODBC/Access)
 
na dann, nur Mut :-)

Trotztdem eine Frage noch - kannst Du denn schon absehen ob Du in mehr als einer Tabelle Daten Lesen und ändern können solltest?

LuCSteR 11. Feb 2009 15:13

Re: Datenmanipulation (ODBC/Access)
 
Wie meinst du das "nur Mut" ^^
Kann mir kaum vorstellen, das mein Vorhaben sehr kompliziert sein kann :)

Es ist abzusehen das:
- die Datenbank später im Netzwerk liegen wird
- meine Applikation auf jedem PC im Netzwerk laufen sollte (wobei ich da nicht weiss, ob auf jedem eine eigene Benutzer DSN erstellt werden muss, und welche Probleme es dann bei dem gelichzeitigen Zugriffen/Manipulationen geben wird :/)
- eine große Menge von Anfragen und Manipulationen auf/an 13 Tabellen (ca. 20K Datensätze) erolgen werden durch die Nutzer :)

Wonach kann ich denn jetzt suchen? Scheint ja so, das ich noch einen andere Komponente brauch, außer denen, die ich schon benutze.

danke :)

HaJo 11. Feb 2009 15:22

Re: Datenmanipulation (ODBC/Access)
 
Such doch mal hier im Forum nach Datenbank-Beispielen. Ob eines für Access dabei ist, weiß ich nicht.
Aber Beispiele gibt es hier sicherlich.

Kurz zu den Begriffen:
Transaction ist so etwas wie die unsichtbare ausführbare Macht bei Datenbanken. Bei den besseren Datenbanken wird eine solche Transaction für jeden Benutzer oder eine bestimmte Tätigkeit in der DB erzeugt.
Der Vorteil der Transaction ist der: Du oder der Benutzer kann nachher entscheiden Änderungen sind OK also speichern - oder aber Änderungen sind nicht OK also verwerfen.

Soll heissen, mit jeder eröffneten Transaction werden die zu bearbeitenden Daten lokal gespeichert.

Dann entscheidet der Benutzer Top oder flopp.
Bei Top werden die lokalen Änderungen in die DB zurückgeschrieben.
Bei Flopp wird der lokale Speicher gelöscht

Query ist eine visuelle Darstellung des Datenbank-Objektes das Du über Ereignisse und Eigenschaften steuern und dem Benutzer in entsprechender Darreichungsform (Grid, Formular usw.) zum bearbeiten anbieten kannst.

HaJo 11. Feb 2009 15:28

Re: Datenmanipulation (ODBC/Access)
 
Ach, nimm das "nur Mut" nicht so ernst :-)

Es ist für Dich nur etwas neues und durch Deine Angaben sicherlich in kurzer Zeit zu bewerkstelligen.

Deinen Angaben zu Folge, würde ich Dir raten, alle Datenbank-Objekte nicht auf dem Hauptformular, sondern in eine eigene DB-Form zu packen um die übersichtlichkeit für später zu sichern.

In der Regel ist das ein Datenbankmodul oder eine spezielle Form um nur Datenbank-komponenten aufzunehmen.
Diese haben in der Regel von Hause aus die Eigenschaft, vor dem Hauptformular geladen zu werden.

LuCSteR 11. Feb 2009 17:06

Re: Datenmanipulation (ODBC/Access)
 
Mhh, könnte mir jmd. Fachkundiger ein paar Tips/Hinweise geben?

Ich suche seit mehreren Stunden nach einer Lösung hier im Forum. Vll. habe ich sie sogar schon gesehen. Aber da ich sowas noch nie gemacht habe, weiss ich jetzt nimmer wo/-nach ich jetzt noch suchen soll :/

Gibt es niemanden, der schon einmal Daten manipuliert hat per ODBC? Welche DB da am anderen Ende hängt dürfte ja für den Prozess unerheblich sein oder?

Grüße

LuCSteR 11. Feb 2009 17:08

Re: Datenmanipulation (ODBC/Access)
 
siehe oberen Beitrag ~missclicked~


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:50 Uhr.
Seite 1 von 3  1 23      

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