![]() |
Datenbank: mysql • Version: 5 • Zugriff über: ZEOS
Frage zu insert und update variationen
hallo zusammen,
nach folgendem beispiel (welches hier aus der DP stammt): Query1.SQL.Text := 'SELECT * FROM '+tablename+' WHERE 0=1'; Query1.Open; // liefert ein leere Datenmenge Query1.Append; // Einfügemodus Query1['feld1'] := ... Query1['feld2'] := ... Query1.Post; // Daten abschicken speichere ich einen neuen DS aus meiner TKundenKlasse. Leider gibt es so keine Möglichkeit mit der selben Abfrage geänderte Daten per update in die DB einzutragen. Gibt es ein ähliches, abwandelbares Konstrukt, oder muss ich ein separates Statement verwenden? Danke Gruss KH |
Re: Frage zu insert und update variationen
Delphi-Quellcode:
statt .Append
Query1.Edit;
|
Re: Frage zu insert und update variationen
Zitat:
so bekomme ich einen fehler: Duplikate Entry in field kundennummer. Auf dem Feld kundennummer ist ein Uniquekey EDIT: und wenn ich den key lösche schreibt er mir einen neuen satz :-( Gruss Kh |
Re: Frage zu insert und update variationen
mache ich etwas falsch, oder gehtswirklich nicht ?
Gruss Kh |
Re: Frage zu insert und update variationen
Deine Fehlerbeschreibung läßt darauf schließen, dass Du bei der Kundennummer beim Edit einen Wert zuweist, der schon in der Datenbank enthalten ist. Das heißt dann aber nicht, dass das mit Edit nicht funktioniert, sondern nur, dass die Daten nicht so ganz zusammenpassen.
Poste bitte mal den ganzen Code, eventuell läßt sich da ja dann eine Fehlerursache finden. So ist's doch ein bisserl schwierig. |
Re: Frage zu insert und update variationen
Zitat:
ja klar, ich hab ja vorher die daten aus der db gelesen und will sie jetzt zurückspeichern. hier der code:
Delphi-Quellcode:
if fkdnr steht die Kundennummer, die es natürlich im Falle der Änderung schon in der DB gibt.
FkundenQuery1.connection := FDBVerbindung;
FkundenQuery1.sql.clear; FkundenQuery1.SQL.add('select '); FkundenQuery1.SQL.add('*'); FkundenQuery1.SQL.add('from kunden where loeschkz = "0" and 0=1'); FkundenQuery1.open; // liefert eine leere datenmenge if (FNeukunde = true) then begin FkundenQuery1.append; end else begin FkundenQuery1.edit; end; FkundenQuery1['name']:= Fname; FkundenQuery1['kundennummer']:= Fkdnr; FkundenQuery1['firma']:= Ffirma; FkundenQuery1['name']:= Fname ; FkundenQuery1['vorname']:= Fvorname; FkundenQuery1['strasse']:= Fstrasse; FkundenQuery1['nr']:= Fnr ; FkundenQuery1['plz']:= Fplz; FkundenQuery1['ort']:= Fort ; FkundenQuery1['vorwahl']:= Fvorwahl; FkundenQuery1['tel']:= Ftel; FkundenQuery1['tel2']:= Ftel2 ; FkundenQuery1['fax']:= Ffax; FkundenQuery1['handy']:= Fhandy ; FkundenQuery1['email']:= Femail ; FkundenQuery1['info']:= Finfo; FkundenQuery1.post; EDIT: und in den andern feldern stehen die geänderten Werte EDIT: das Ganze läuft in meiner Klasse TKunde. Gruss KH |
Re: Frage zu insert und update variationen
Ich verstehe nicht ganz, wozu Du eine Abfrage brauchst, die Dir in jedem Fall eine leere Datenmenge liefert :gruebel:
|
Re: Frage zu insert und update variationen
Zitat:
wenn ich die zeile: FkundenQuery1.open; // liefert eine leere datenmenge weglasse, bekomme ich in jedem Fall eine excepion: operation can not be performed on an inactive dataset :-( EDIT: ich hab diese Art der Abfrage so auch zum ersten Mal hier gesehen EDIT: hier : ![]() |
Re: Frage zu insert und update variationen
Das Feld "kundennummer" muss das Primärschlüsselfeld sein.
Delphi-Quellcode:
FkundenQuery1.SQL.add('select * from kunden');
FkundenQuery1.SQL.add('where kundennummer='+QuotedStr(FKdnr)); // hier wäre ein Parameter vorteilhaft FkundenQuery1.open; // liefert eine leere datenmenge oder Genau einen Datensatz if FkundenQuery1.IsEmpty then begin FkundenQuery1.append; // neuen Datensatz anhängen end else begin FkundenQuery1.edit; // bestehenden Datensatz ändern end; |
Re: Frage zu insert und update variationen
Zitat:
aha, na dann probier ich das gleich mal |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:17 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