Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbankeintrag wird nicht geändert (https://www.delphipraxis.net/203569-datenbankeintrag-wird-nicht-geaendert.html)

Mario61 1. Mär 2020 13:49

Datenbank: mysql • Version: 7.1.4 • Zugriff über: Datenbank-Tool

Datenbankeintrag wird nicht geändert
 
Hallo...

Ich bin schon ziemlich am verzweifeln, weil ein einfacher SQL-Befehl nicht ausgeführt wird.
Folgender SQL-Befehl:

UPDATE Daten Set Kategorie='Büromaterial' WHERE Kategorie = 'Bromaterial';

Ich könnte die Daten alle per Hand ändern, das würde gehen, aber es sind mir einfach zu viele. Es geht hier nur um die fehlenden Umlaute. Ich benutze ein Datenbank-Tool (SQLite-Administrator) wo ich diesen SQL-Befehl eingebe.
Es passiert aber einfach nix. Wenn ich in der WHERE-Klausel nicht Kategorie sondern ID eingebe, wird dieser eine Datensatz geändert. Deshalb kommt mir die Frage, ob MySql überhaupt als WHERE-Klausel die Selbe wie im SET nicht akzeptiert.

jobo 1. Mär 2020 13:54

AW: Datenbankeintrag wird nicht geändert
 
Versuch bitte, präzise zu sein:
"Passiert nichts" bedeutet was genau?
- es geschieht gar nichts
- es werden 0 Updates durchgeführt
- es wird ein Fehler angezeigt?

Starte bitte mal das Select:
Code:
 Select * from Daten WHERE Kategorie = 'Bromaterial';
Wieviel Datensätze werden angezeigt?

Mario61 1. Mär 2020 14:04

AW: Datenbankeintrag wird nicht geändert
 
Hallo...

es geschieht gar nichts
es werden 0 Updates durchgeführt

In der Dataliste wird "Bromateriel" angezeigt, als ich diese per Hand ändern wollte zeigt er mir plötzlich "B romaterial" an, ich denke daran wird es liegen. Diese blöden Umlaute... Gibt es eine Möglichkeit diese in der Datenbank zu ändern oder muss ich alle einzeln ändern ?

Mit
Select * from Daten WHERE Kategorie = 'Bromaterial';
wird natürlich auch nix angezeigt.
Mit Select * from Daten WHERE Kategorie = 'B romaterial'; (Leerzeichen)
wird mir auch nix angezeigt. Klar, irgend so ein Umlautdingens...

DeddyH 1. Mär 2020 14:17

AW: Datenbankeintrag wird nicht geändert
 
Und was passiert bei
SQL-Code:
/* jedes "falsche" Zeichen ersetzen */
UPDATE Daten Set Kategorie='Büromaterial' WHERE Kategorie LIKE 'B_romaterial';
?

Mario61 1. Mär 2020 14:25

AW: Datenbankeintrag wird nicht geändert
 
Phu..

Also mit dem LIKE hat es funktioniert. Ich habe es ein wenig abgeändert:

Code:
UPDATE Daten Set Kategorie='Büromaterial' WHERE Kategorie LIKE 'romaterial';
Hätt ich ja auch drauf kommen können, hab den LIKE Befehl selber schon oft benutzt...

Danke für Deine Hilfe !!!

jobo 1. Mär 2020 14:36

AW: Datenbankeintrag wird nicht geändert
 
Zitat:

Zitat von Mario61 (Beitrag 1458695)
Phu..
Also mit dem LIKE hat es funktioniert. Ich habe es ein wenig abgeändert:
Code:
UPDATE Daten Set Kategorie='Büromaterial' WHERE Kategorie LIKE 'romaterial';

Das kann ja wohl kaum stimmen.
Die Nutzung von Like ohne Angabe von Wildcards macht auch wenig Sinn.

himitsu 1. Mär 2020 14:38

AW: Datenbankeintrag wird nicht geändert
 
jetzt stell dir mal vor, du hättest an den Datensätzen noch eine ID, welche du jetzt verwenden könntest,
oder wie sieht es mit anderen Spalten aus, welche man nutzen könnte, bzw. das LIKE richtig verwenden?

Man könnte auch einfach sortieren und dann die x-te Zeile bearbeiten. (LIMIT, OFFSET, ...)

Ansonsten mußt du halt mal nachsehen was wirklich in dem Feld drin steht.
Oder einfach in einem Grid die Daten anzeigen, dann den passenden Datensatz auswählen und den jeweiligen Feldinhalt als Parameter für die Änderung.

Bernhard Geyer 1. Mär 2020 15:30

AW: Datenbankeintrag wird nicht geändert
 
Probleme mit Umlauten? In 2020?
Sag mal mit welchen Zugriffskomponenten/Programmen/Tools arbeitest du noch?

ich würde erstmal alles aktualisieren auf Komponenten die schon in der "Neuzeit" angekommen sind.
Ich glaube seit MySQL 4 sollte man keine Probleme mehr damit haben.

Ich würde sagen sorge erstmal dafür das all deine Connection-Verbindungen mit UTF8 laufen
(machen moderne Komponenten out of the box). Wenn du nur eine Header-Übersetzung nutzt muss du evtl. die Codierung der Verbindung explizit setzen.

TigerLilly 1. Mär 2020 16:24

AW: Datenbankeintrag wird nicht geändert
 
Das ist ein Zeichensatz Problem. Würde ich nicht mit einem Workaround (aka Like '%') lösen, sondern grundsätzlich. Du kannst im mySql für die Datenbank, die Tabelle und das Feld den Zeichensatz festlegen. Irgendwie müssen die Umlaute ja auch in die DB gekommen sein.

https://www.peterkropff.de/allgemein...ng/mysql_1.htm
https://www.homepage-anleitung.de/20...tf8-umstellen/

HTH

Mario61 1. Mär 2020 17:00

AW: Datenbankeintrag wird nicht geändert
 
Also, erst einmal vielen Dank für eure Antworten.
Auflösung:

Ein Freund hat ein Haushaltsbuch unter Access geschrieben, da mir das aber nicht gefallen hat, allein schon wegen Access, habe ich selber unter Delphi ein Haushaltsbuch geschrieben. Im Access hat er eine Exportfunktion für Excel gemacht. Dementsprechend habe ich diese unter Excel als CSV gespeichert und unter dem Datenbank-Tool importiert. naja, leider ohne Umlaute... wie ich festgestellt habe, habe ich unter Excel ein falsches CSV als Export benutzt. Ich habe das ganze noch mal gemacht und darauf geachtet, das in der CSV auch Umlaute drinn sind. Diese nochmals in meine MySql-Datenbank importiert und siehe da, alls drinn mit Umlaute...

Nochmals DANKE an alle...


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:22 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