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 3 von 3     123   
khh

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

Re: Datenmanipulation (ODBC/Access)

  Alt 12. Feb 2009, 12:18
Zitat von LuCSteR:
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:
'Update Entgeltdatei_SIA Set Bezeichnung='+'TEST1'+' where Bezeichnung='+'Unfrei'+'' Habe gerade was von ExecSQL gelesen. Vll werde ich dadurch fündig. Trotzdem danke
richtig.

Statements die die Daten manipulieren mit exec.SQL ausführen, reine abfragen mit open.
EDIT: bevor du dich mit access rumschlägst und später eh umsteigen musst, stellt sich die Frage nicht gleich die DB zu wechseln .


gruss KH
Karl-Heinz
  Mit Zitat antworten Zitat
LuCSteR

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

Re: Datenmanipulation (ODBC/Access)

  Alt 12. Feb 2009, 12:31
Mhh,

danke erstmal für die Mühe. Ich bin davon ausgegangen, das es unerheblich ist, ob in Delphi oder Lazarus programmiert wird, denn die Komponenten sind die selben. Damit auch die Abläufe und Kommandos? Mhh. ich versuch mein Glück dort.

Aber jetzt würde mich doch mal interssieren wie das unter Delphi realisiert wird. Ein eifnaches Update oder Insert Into...

@khh: siehe #19 kommen in allen möglichen Konstruktionen Fehler
  Mit Zitat antworten Zitat
HaJo

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

Re: Datenmanipulation (ODBC/Access)

  Alt 12. Feb 2009, 12:39
Du bist aber hartnäckig - lach:

Insert Into mit drei Feldern und drei Parametern:

KI ist eine Query-Komponente mit Änderungseigenschaften!!
Zitat:
Delphi-Quellcode:
        WITH DM DO
            BEGIN
               KI.close;
               KI.SQL.Clear;
               KI.SQL.Add('Insert into Kundeninfo (Nr, Info, Text)');
               KI.SQL.Add('VALUES (:Nr, :Info, :Text)');
               KI.ParamByName('Nr').AsInteger := dm.QryAufschaltungNR.AsInteger;
               KI.ParamByName('Info').AsString := DlgKDInfo.Edit1.Text;
               KI.ParamByName('Text').AsBlob := DlgKDInfo.Memo1.Text;
               TRY
                  Ki.ExecSQL;
                  DM.tblKundeninfo.Close;
                  DM.tblKundeninfo.Open;
              EXCEPT
               END;
            END;
[edit=mkinzler]Ist den die Verwendung von Delphi-Tags so schwer Mfg, mkinzler[/edit]
Hans-Joachim Brosius
  Mit Zitat antworten Zitat
LuCSteR

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

Re: Datenmanipulation (ODBC/Access)

  Alt 12. Feb 2009, 13:08
So wie ich das sehe, mache ich nichts anderes...Bei Lazarus braucht man 80% für die Einarbeitung 20% der zeit für das Lösen des eigentlichen Problems...Immerwieder schön :/
  Mit Zitat antworten Zitat
khh

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

Re: Datenmanipulation (ODBC/Access)

  Alt 12. Feb 2009, 13:28
Zitat von LuCSteR:
So wie ich das sehe, mache ich nichts anderes...Bei Lazarus braucht man 80% für die Einarbeitung 20% der zeit für das Lösen des eigentlichen Problems...Immerwieder schön :/
sehe ich nicht so,
wenn dein Konzept passt funktioniert das mit lazarus einwandfrei.


Gruss KHH
Karl-Heinz
  Mit Zitat antworten Zitat
HaJo

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

Re: Datenmanipulation (ODBC/Access)

  Alt 12. Feb 2009, 13:31
Das ist wohl bei jeder Programmiersprache gleich
Sein Handwerkszeug sollte man schon kennen, zumindest zum Teil.

Aber der Riesenvorteil bei "Delphi-Pascal" gegenüber allen anderen Sprachen, ist die durch strukturieren (Einrückungen) und die verständlich/signifikante Syntax, entstehende Übersichtlichkeit.

Man braucht keine ellenlangen Kommentare um sich selber zu erklären was denn der Programmblock gerade macht, wie z.B bei C++, wenn man nach Jahren dort einmal etwas ändern muss.

Zudem sucht bis heutzutage der geniale Compiler von Borland seinesgleichen!

Und das, obwohl der Erfinder von Delphi nun bei Microsoft seinen Job wahr nimmt.

Wie der Compiler bei Lazarus arbeitet - keine Ahnung - aber die Sprache ist die gleiche.

lieben Gruß zu Dir
Jochen
Hans-Joachim Brosius
  Mit Zitat antworten Zitat
LuCSteR

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

Re: Datenmanipulation (ODBC/Access)

  Alt 12. Feb 2009, 15:21
Iwie führt das hier in die falsche Richtung. Aber trotzdem sag ich kurz noch dazu, das größte Problem von lazarus ist, das es keine eigene Hilfe besitzt.

@KHH:

Verstehe die Intention deiner Aussage nicht aber gut.

Zum Thema:
Folgend sind alle Schritte nochmal aufgeführt, die ich getätigt habe, um Abfragen erfolgreich durchführen zu können.

In den Systemsteuerungen --> Verwaltung --> Datenquellen (ODBC): dort eine "Benutzer DSN" hinzugefügt mit dem Microsoft Access Treiber (.mdb)

- ODBCConnection1
- SQLTransaction1
- Datasource1
- SQLQuery1
- DBGrid1
auf die Form gezogen.


Dann folgendes ausgeführt:
- 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
- Eigenschaft von SQLQuery1.SQL ein SQL-Kommando eintragen (Bsp. Select * From MEINE_TAB)


Code sieht dann wie folgt aus:
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;
Im onButtonClick habe ich rumprobiert, Daten zu manipulieren.
Bspw. so:
Delphi-Quellcode:
SQLQuery1.Close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('Update Entgeltdatei_SIA Set Bezeichnung='+QuotedStr('TEST')+' Where Bezeichnung='+QuotedStr('Unfrei'));
SQLQuery1.ExecSQL;
SQLQuery1.ApplyUpdates;
SQLTransaction1.Commit;
oder so:
Delphi-Quellcode:
SQLQuery1.Close;
ODBCConnection1.ExecuteDirect'Update Entgeltdatei_SIA Set Bezeichnung='+QuotedStr('TEST')+' Where Bezeichnung='+QuotedStr('Unfrei'));
SQLQuery1.ApplyUpdates;
SQLTransaction1.Commit;
Hat alles nichts genützt.
  Mit Zitat antworten Zitat
HaJo

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

Re: Datenmanipulation (ODBC/Access)

  Alt 12. Feb 2009, 16:07
Also,

wenn dabei keine Fehlermeldung kam...

mir persönlich sind da zu viele Variable für den ersten Lazarus-Test drinne.
Zudem ist die Verfahrensweise über CachedUpdates eine etwas andere

Auch muss die Funktion "QuotedStr" nicht unbedingt das richtige Ergebnis liefern. Wäre ggf. mit einer Variablen mal zu überprüfen ob wirklich beide Hochkommata verdoppelt werden.

Inm OnKlick-Ereignis des Button folgende Variablen-Deklaration über dem BEGIN mal eintragen:
Delphi-Quellcode:
VAR
   Test : STRING [100];
Zur Sicherheit unter dem
Delphi-Quellcode:
BEGIN
   Test = ''; // Variable initialisieren
Delphi-Quellcode:
SQLQuery1.Close;
SQLQuery1.CachedUpdates := FALSE; //Direkt in der DB ändern - sollte eigentlich Standard sein!
Test := QuotedStr('TEST');
SQLQuery1.SQL.Clear; // <-- hier einen Haltepunkt für den Debuger setzen
                     // und die Variable Test mal auf Inhalt prüfen
                     // sieht der Inhalt wirklich so "TEST" aus?

SQLQuery1.SQL.Add('Update Entgeltdatei_SIA Set Bezeichnung='+QuotedStr('TEST')+' Where Bezeichnung='+QuotedStr('Unfrei'));

TRY // Kennt Lazarus Try-Exception-Blöcke??
   SQLQuery1.ExecSQL;
EXCEPT
   HALT(0); // Wenn es geht mit dem Debuger - hier auch einen Haltepunkt setzen**
END;
SQLTransaction1.Commit;
** Wenn hier wirklich das Prg beendet wird - funktioniert es - Nur ist dann noch irgendwo ein formeller Fehler drin

Uff - Lazarus und Access - mal sehen
Hans-Joachim Brosius
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 12:55 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