AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Frage zu insert und update variationen
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu insert und update variationen

Ein Thema von khh · begonnen am 3. Dez 2008 · letzter Beitrag vom 3. Dez 2008
Antwort Antwort
Seite 1 von 2  1 2      
khh

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

Frage zu insert und update variationen

  Alt 3. Dez 2008, 13:55
Datenbank: mysql • Version: 5 • Zugriff über: ZEOS
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
Karl-Heinz
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Frage zu insert und update variationen

  Alt 3. Dez 2008, 13:57
Query1.Edit; statt .Append
Markus Kinzler
  Mit Zitat antworten Zitat
khh

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

Re: Frage zu insert und update variationen

  Alt 3. Dez 2008, 14:32
Zitat von mkinzler:
Query1.Edit; statt .Append
mh, wäre ja zu einfach



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
Karl-Heinz
  Mit Zitat antworten Zitat
khh

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

Re: Frage zu insert und update variationen

  Alt 3. Dez 2008, 15:55
mache ich etwas falsch, oder gehtswirklich nicht ?


Gruss Kh
Karl-Heinz
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

Re: Frage zu insert und update variationen

  Alt 3. Dez 2008, 16:07
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.
  Mit Zitat antworten Zitat
khh

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

Re: Frage zu insert und update variationen

  Alt 3. Dez 2008, 16:23
Zitat von nahpets:
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.

ja klar,
ich hab ja vorher die daten aus der db gelesen und will sie jetzt zurückspeichern.
hier der code:
Delphi-Quellcode:
 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;
if fkdnr steht die Kundennummer, die es natürlich im Falle der Änderung schon in der DB gibt.
EDIT: und in den andern feldern stehen die geänderten Werte
EDIT: das Ganze läuft in meiner Klasse TKunde.

Gruss KH
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Frage zu insert und update variationen

  Alt 3. Dez 2008, 16:44
Ich verstehe nicht ganz, wozu Du eine Abfrage brauchst, die Dir in jedem Fall eine leere Datenmenge liefert
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
khh

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

Re: Frage zu insert und update variationen

  Alt 3. Dez 2008, 17:01
Zitat von DeddyH:
Ich verstehe nicht ganz, wozu Du eine Abfrage brauchst, die Dir in jedem Fall eine leere Datenmenge liefert
so stand es im Beispiel.
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 : http://www.delphipraxis.net/internal...ct.php?t=26406
Karl-Heinz
  Mit Zitat antworten Zitat
shmia

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

Re: Frage zu insert und update variationen

  Alt 3. Dez 2008, 17:04
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;
Andreas
  Mit Zitat antworten Zitat
khh

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

Re: Frage zu insert und update variationen

  Alt 3. Dez 2008, 17:08
Zitat von shmia:
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;

aha, na dann probier ich das gleich mal
Karl-Heinz
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15: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