AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Datenmanipulation (ODBC/Access)
Thema durchsuchen
Ansicht
Themen-Optionen

Datenmanipulation (ODBC/Access)

Ein Thema von LuCSteR · begonnen am 11. Feb 2009 · letzter Beitrag vom 12. Feb 2009
Antwort Antwort
Seite 2 von 3     12 3      
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#11

Re: Datenmanipulation (ODBC/Access)

  Alt 11. Feb 2009, 17:27
Zitat von LuCSteR:
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 :/)
Da wirst du später mit einer Access Datenbank ein Problem bekommen!
Die Access Datenbank läuft lokal sehr gut aber im Netzwerk gibt es grosse Schwierigkeiten.
Du kannst aber auf die MSDE 2000 bzw. jetzt heisst es MS SQL Server Express ausweichen.
Das ist im Prinzip ein SQL Server mit ein paar Einschränkungen, die aber bei deiner kleinen Datenbank nicht stören.

Es ist auch nicht schwer, die Anwendung so zu schreiben, dass sie sowohl auf Access als auch auf dem SQL Server läuft.
Andreas
  Mit Zitat antworten Zitat
LuCSteR

Registriert seit: 16. Sep 2005
168 Beiträge
 
#12

Re: Datenmanipulation (ODBC/Access)

  Alt 11. Feb 2009, 17:45
Eine Benutzer DSN kann ja für mehrere DB erstellt werde. gehe dann auch mal davon aus, das ich per ODBC auch mit diesen DBs kommunizieren kann. Trotzdem finde ich nirgends einen Ansatz, wie das Manipulieren von Daten funktionieren soll. Abfragen kalppen einwandrei. Manipulationen nicht. HILFE

Grüße
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#13

Re: Datenmanipulation (ODBC/Access)

  Alt 11. Feb 2009, 17:48
Zitat von LuCSteR:
Eine Benutzer DSN kann ja für mehrere DB erstellt werde. gehe dann auch mal davon aus, das ich per ODBC auch mit diesen DBs kommunizieren kann. Trotzdem finde ich nirgends einen Ansatz, wie das Manipulieren von Daten funktionieren soll. Abfragen kalppen einwandrei. Manipulationen nicht. HILFE

Grüße
was hast denn unternommen, zur manipulation ?
Karl-Heinz
  Mit Zitat antworten Zitat
HaJo

Registriert seit: 28. Apr 2004
Ort: Würselen
140 Beiträge
 
Delphi 8 Enterprise
 
#14

Re: Datenmanipulation (ODBC/Access)

  Alt 11. Feb 2009, 23:17
@LuCSteR:

Also ich versuche noch mal in Kurzform die Vorgehensweise zu skizzieren:

Mit FreePascal eine Haupform erstellen.
Mit FreePascal eine Dataform erstellen.

Anschließend erstellst Du in der Dataform jene Komponenten, mit denen Du in der jetzigen Anwendung die Verbindung zur DB erstellst.

Nun schau Dir mal meine Abbildung an. Hier kannst Du sehen in welchem Zusammenhang die verschiedenen DB-Komponenten stehen.

Um Abfragen oder Tabellen bearbeiten zu können, ist noch eine Komponente nötig, eine so genannte Datasource. Jede visuell zu bearbeitende Tabelle oder Abfrage sollte erst einmal eine eigene Datasource haben.

Diese Komponenten sollten natürlich treffend benannt werden um Dir später das Arbeiten zu erleichtern.

Jede dieser Datasource-Komponenten kannst Du nun mit kannst Du nun mit beliebigen Komponenten zur Datensteuerung versehen, z.B dem DBNavigator oder einer Edit-Komponente.

Zu den von Dir benannten Transaktionen. Beim öffnen einer Datenverbindung wird bei den meisten DB-Anwendungen eine Transaktion eröffnet.
Beim schließen der Anwendung bzw. der Datenverbindung wird sie automatisch geschlossen
Miniaturansicht angehängter Grafiken
neues_bild__2__439.jpg  
Hans-Joachim Brosius
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: Datenmanipulation (ODBC/Access)

  Alt 12. Feb 2009, 05:37
Zitat:
Beim öffnen einer Datenverbindung wird bei den meisten DB-Anwendungen eine Transaktion eröffnet.
Aber nur bei sehr kleinen.
Markus Kinzler
  Mit Zitat antworten Zitat
LuCSteR

Registriert seit: 16. Sep 2005
168 Beiträge
 
#16

Re: Datenmanipulation (ODBC/Access)

  Alt 12. Feb 2009, 10:17
Ich schreibe ja gerade ersteinmal ein kleines Rum-Probeir-Programm, wo ich alles austeste. Folglich ist mir die Struktur mit 2 Forms ersteinmal egal.

Ich habe nach der Kompo Database gesucht, aber ich benutze Lazarus, und finde sie deshalb scheinbar nicht.
Vll. nochmal zum Stand der Dinge

- ODBCConnection1
- SQLTransaction1
- Datasource1
- SQLQuery1

Mit diesen 4 Komponenten habe ich es geschafft eine verbindung aufzubauen, mehrere Abfragen zu senden und mir deren Ergebnisse in einer DBGrid1 anzeigen zu lassen. Funktioniert so:
Delphi-Quellcode:
{onFormCreate}
ODBCConnection1.DatabaseName:='test1'; //Benutzer DSN Name
ODBCConnection1.Connected:=true;
SQLQuery1.UsePrimaryKeyAsKey:=false;
SQLQuery1.Active:=true; //erster String wird direkt ausgeführt

{onButtonClick}
SQLQuery1.Active:=false;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('SELECT Bezeichnung FROM Entgeltdatei_SIA');
SQLQuery1.Active:=true;

{onFormClose}
ODBCConnection1.Connected:=false;
Prima. Zum Manipulieren habe ich bisher nichts unternommen, da ich nicht einmal einen Ansatz sehe, wie das funktionieren soll. Die Queries sind ja nur Abfragen. Aber womit muss ich denn operieren um manipulieren zu können? Bzw. direkt besser gefragt: Wie funktioniert es? Bsp.? Nur ein ganz kurzes vll

grüße
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#17

Re: Datenmanipulation (ODBC/Access)

  Alt 12. Feb 2009, 10:40
Hallo Lucster,

wie wäre es mit
'Update Entgeltdatei_SIA Set Bezeichnung='Bretzelzeichnung' where Bezeichnung='Bratzelzeichnung'; dann wird in allen Sätzen die Bratzelzeichnung durch Bretzelzeichnung ersetzt.


gruß K-H
  Mit Zitat antworten Zitat
LuCSteR

Registriert seit: 16. Sep 2005
168 Beiträge
 
#18

Re: Datenmanipulation (ODBC/Access)

  Alt 12. Feb 2009, 10:49
lustig
als hätte ich sowas nich schon selbst ausprobiert

Immer die gleichen Fehler: EDataBaseError in Lib "db"...

btw lautet das richtige SQL Statement in Delphi umgesetzt:
SQLQuery1.SQL.Add('Update Entgeltdatei_SIA Set Bezeichnung='+QuotedStr('TEST')+' Where Bezeichnung='+QuotedStr('Unfrei')); Habe gerade was von ExecSQL gelesen. Vll werde ich dadurch fündig. Trotzdem danke
  Mit Zitat antworten Zitat
LuCSteR

Registriert seit: 16. Sep 2005
168 Beiträge
 
#19

Re: Datenmanipulation (ODBC/Access)

  Alt 12. Feb 2009, 11:11
Delphi-Quellcode:
SQLQuery1.SQL.Add('Update Entgeltdatei_SIA Set Bezeichnung='+QuotedStr('TEST')+' Where Bezeichnung='+QuotedStr('Unfrei'));
SQLQuery1.Params[0].DataType:=ftString;
SQLQuery1.ExecSQL;
--> EListError ... mit SQLQuery1.Active:=true; hinten dran auch...

Kann es sein das die Verbidnungen zwischen den Komponenten nicht passen?

Eigenschaft von ODBCConnection1.Transaction auf die SQLTransaction1 setzen,
Eigenschaft von SQLQuery1.Database auf ODBCConnection1 setzen,
Eigenschaft von Datasource1.Dataset auf SQLQuery1 setzen,
Eigenschaft von DBGrid1.Datasource auf Datasource1 setzen,
  Mit Zitat antworten Zitat
HaJo

Registriert seit: 28. Apr 2004
Ort: Würselen
140 Beiträge
 
Delphi 8 Enterprise
 
#20

Re: Datenmanipulation (ODBC/Access)

  Alt 12. Feb 2009, 11:17
Hallo LuCSteR,

wie heißt die Fehlermeldung denn genau? Etwa: "cannot load libodbc.so"???

Bedenke bitte das Du Dich hier in einem DELPHI-Forum befindest und nicht in einem LAZARUS-Forum.

So wie es aussieht, wird Access und damit die MS-JET-Engine gar nicht unterstützt, sondern nur folgende Datenbanken:
Zitat:
Quelle: http://wiki.lazarus.freepascal.org/Databases/de

Unterstützte Plattformen:
Datenbank Package Name Benötigt Client lib? Benötigt Server? Unterstützte Versionen
Textdateien SDFLaz Nein Nein - Alle
Im Speicher MemDSLaz Nein Nein - Alle
DBase DBFLaz Nein Nein III+, IV, VII Alle
FoxPro DBFLaz Nein Nein - Alle
Paradox TParadoxDataSet Nein Nein bis zu Version 7 (und darüber ??) Alle
SQLite SQLite Ja Nein - -
MySQL SQLdb Ja Ja 3 - 4.0 i386: Linux, Win32
Firebird IBase Ja Ja 1 - 1.5 i386: Linux, Win32
PostgreSQL SQLdb Ja Ja 6.6 - 8 i386: Linux, Win32
ODBC SQLdb Ja Depends 3.x 1) i386: Linux, Win32
Interbase IBase Ja Ja 4 - 6 i386: Linux, Win32
Oracle SQLdb Ja Ja - -
Das soll Dir aber nicht den Mut nehmen es weiter zu versuchen, sondern vielleicht mal eher dort im Forum nachsehen unter: http://www.lazarusforum.de

Dort im Forum ist bei Access u.a. folgendes zu lesen: "...Geht perfekt wenn ich mit ZeosDB oder auch direkt mit SQLDb-Komponenten drauf zugreife, aber mit ODBC nix zu wollen."


Weiß nicht so richtig ob Du hier an der richtigen Stelle nachfragst - Kann mich aber auch täuschen.
Hast mich richtig verunsichert.

Nachtrag:
Zitat:
Connecting to MS Access

On Windows, you can use

Driver = 'Microsoft Access Driver (*.mdb)'
Params.Strings = (
'DBQ=C:\path\to\my\database.mdb'
)

Note: The MS Access ODBC driver seems not to support the SQLPrimaryKeys API function, hence UpdateIndexDefs will fail. Currently, you must set SQLQuery.UsePrimaryAsKey:=false; to avoid an exception until code has been added that tests for the availability of the function in the driver.
Hans-Joachim Brosius
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 16:31 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