Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Update in MySQL (https://www.delphipraxis.net/137852-update-mysql.html)

youuu 29. Jul 2009 18:35

Datenbank: MySQL • Zugriff über: Devarts

Update in MySQL
 
Hi,

ich Update meine Mysql in dieser form:

[delphi]Query.SQL.Text:='UPDATE `Tabelle` Set ....[delphi]

Und es gibt Datensätze die als Unique definiert sind.

Wie kann ich nun Daten Updaten ohne das ein Fehler auftritt.

Das Heiß:

Datensatz1: Name=Test
nun will ich diesen Datensatz Updaten aber belasse den Namen= Test, so bekomm ich die Fehlermeldung keine doppelten Datensätze, obwohl ich nur diesen einen Datensatz Update.

DeddyH 29. Jul 2009 18:40

Re: Update in MySQL
 
Stimmt die WHERE-Bedingung evtl. nicht? Ansonsten sieht das OK aus.

youuu 29. Jul 2009 18:43

Re: Update in MySQL
 
Das einfügen an sich ist ja kein Problem, nur da manche Datensätze als Unique definiert sind sagt Mysql Halt Stop der Datensatz existiert schon den möchte ich nciht nochmal drin stehen haben ;)

Jedoch möchte ich nur den einen Datensatz updaten.

Nochmal kleines Beispiel:

Wert: Name = Testname (Unique in DB)
Preis = TestPreis
Anzahl = TestAnzahl

Nun möchte ich diesen Datensatz lediglich Updaten in:
Wert: Name = Testname (Unique in DB)
Preis = TestPreisXYZ
Anzahl = TestAnzahlXYZ

Dann sagt mir DB Stop Testname eistiert schon.

DeddyH 29. Jul 2009 18:45

Re: Update in MySQL
 
Zeig doch mal das komplette Update-Statement.

youuu 29. Jul 2009 18:47

Re: Update in MySQL
 
Delphi-Quellcode:
FormMain.QueryCustomer.SQL.Text:='UPDATE `'+Tabelle.Customer+'` Set '+
      '`anrede`='''+FormKunden.ComboBoxAnrede.Items[FormKunden.ComboBoxAnrede.ItemIndex]+''','+
      '`company_name`='''+FormKunden.EditCompany.Text+''','+
      '`company_description`='''+FormKunden.EditDescription.Text+''';'+
      'WHERE `Customer_Number`='''+Customer.Customer_number+''';';
    FormMain.QueryCustomer.Execute; //SQL-Statement ausführen

DeddyH 29. Jul 2009 18:50

Re: Update in MySQL
 
Ich vermute mal, Customer_Number ist der PK. Was ist der UNIQUE KEY?

[edit] Mit SQL-Parametern wärst Du übrigens besser bedient. [/edit]

youuu 29. Jul 2009 19:00

Re: Update in MySQL
 
Zitat:

Zitat von DeddyH
Ich vermute mal, Customer_Number ist der PK. Was ist der UNIQUE KEY?

[edit] Mit SQL-Parametern wärst Du übrigens besser bedient. [/edit]

Ja das weiß ich, bin gerade alles umzubauen mit Parametern.

Firmenname und Kundennummer sind Unique

DeddyH 29. Jul 2009 19:02

Re: Update in MySQL
 
Dann scheint es so, als sei der Firmenname bereits in einem anderen Datensatz vorhanden.

youuu 29. Jul 2009 19:22

Re: Update in MySQL
 
Ist er allerdings nicht. Nur in seinen eigenen Datensatz. Nur DB nimmt an das ich Ihn doppelt eintragen möchte bei den Update.

Wäre er doppelt drin, hät ich es ja nicht als Unique definieren dürfen udn Mysql hätte gemeckert.


Als einzigsten Weg den ich sehe, muss ich die Exception abfangen und dann den Datensatz ohne den Unique Wert speichern, da er ja sowieso schon in der DB steht und nicht wirklich geupdatet werdne muss oder seh ich as falsch?

Allerdings wie fange ich diese Exception korrekt ab?

Erste Gelegenheit für Exception bei $773842EB. Exception-Klasse EMySqlException mit Meldung '
#23000Duplicate entry 'Test Firma' for key 2'. Prozess Verwaltungs_Manager.exe (4524)

Delphi-Quellcode:
 
Except
  on e: ???? do
  Begin
    .....
  end;
end;

mjustin 29. Jul 2009 21:10

Re: Update in MySQL
 
Zitat:

Zitat von youuu
Ist er allerdings nicht. Nur in seinen eigenen Datensatz. Nur DB nimmt an das ich Ihn doppelt eintragen möchte bei den Update.

Ein kleines Beispiel wäre hilfreich :) ... Treffe ich mit der folgenden Beschreibung die Situation?
  • Eine Firma mit dem Namen 'Tröt' ist bereits in der Datenbank
  • Eine bereits vorhandene Firma 'Tüt' soll über ein UPDATE Statement umbenannt werden in (ebenfalls!) 'Tröt'

Viele Grüße,


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:30 Uhr.
Seite 1 von 2  1 2      

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