Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi fehler beim aktualisieren (https://www.delphipraxis.net/106468-fehler-beim-aktualisieren.html)

Delphi-Phil 11. Jan 2008 11:33

Datenbank: sql server • Zugriff über: ado

fehler beim aktualisieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Delphi-Freunde,

ich habe da immer diesen komischen Fehler wenn ich einen Datensatz neu laden möchte.
Im Anhang ist ein Screen, ich denke da kann man es besser sehen als wenn ich alles erkläre.


Gruß Phil

mkinzler 11. Jan 2008 11:35

Re: fehler beim aktualisieren
 
Wie lädst du neu?

Delphi-Phil 11. Jan 2008 11:36

Re: fehler beim aktualisieren
 
ich habe erstmal nur zum testen ne db navigator genommen!

mkinzler 11. Jan 2008 11:38

Re: fehler beim aktualisieren
 
Und wie sieht die Abfrage aus?

Delphi-Phil 11. Jan 2008 11:40

Re: fehler beim aktualisieren
 
nen ganz normales tabel (ADO) und dann nen datasource!

mkinzler 11. Jan 2008 11:43

Re: fehler beim aktualisieren
 
Versuchs mal mit einem TADODataSet/TADOQuery

Delphi-Phil 11. Jan 2008 11:52

Re: fehler beim aktualisieren
 
es kommt genau der gleiche fehler!

Jelly 11. Jan 2008 12:11

Re: fehler beim aktualisieren
 
Hast du einen Primärschlüssel in der Tabelle definiert. Wenn nicht, kann der SQL Server 2 komplett identische Datensätze nicht auseinander halten, und wird deshalb nicht updated.

Name, Vorname
Muller, Charlie
Muller, Charlie

wirst du es nicht im SQL Server so leicht fertigstellen, nur einen der beiden Datensätze zu update oder löschen.

Ich denke, das sagt deine Fehlermeldung aus.

Delphi-Phil 11. Jan 2008 12:15

Re: fehler beim aktualisieren
 
okay! wie kann ich eine id einstellen so das jedesmal es um einen schritt weiter geht! Ich bin noch sql server neuling... feld typ muss ja denke ich mal int (integer) sein und was muss man noch einstellen?

mikhal 11. Jan 2008 12:17

Re: fehler beim aktualisieren
 
Nachträglich wohl problematisch, eine Integer. oder GUID-Spalte anlegen und Property Identity abhaken.

Grüße
Mikhal

Delphi-Phil 11. Jan 2008 12:28

Re: fehler beim aktualisieren
 
ich erstelle und verwalte die tabellen mit diesem microsoft sql server management studio express. wo kann ich da genau diese id einstellung einstellen??


Gruß Phil

Delphi-Phil 11. Jan 2008 14:05

Re: fehler beim aktualisieren
 
mit id einstellungen, meine ich: wie kann ich eine fortlaufende id nummer vergeben !?!?!


Gruß Phil
und ein schönes Wochenende!!

DeddyH 11. Jan 2008 14:21

Re: fehler beim aktualisieren
 
Du musst das Feld der Tabelle hinzufügen und als Primärschlüssel definieren. Als Datentyp bietet sich integer an, falls es so etwas gibt, am Besten "Autowert".

Jelly 11. Jan 2008 14:28

Re: fehler beim aktualisieren
 
Das hinzufügen des Wertes setzt noch lange nicht den Wert, auch nicht bei Autowert (nennt sich übrigens identity beim SQL Server)

DeddyH 11. Jan 2008 14:30

Re: fehler beim aktualisieren
 
Der SQL-Server ist nicht meine Welt ;)

Delphi-Phil 11. Jan 2008 14:30

Re: fehler beim aktualisieren
 
was ist denn jetzt bitte der unterschied zwischen einem index und dem primär schlüssel, ich kann beides für ein feld einstellen!!?!?!?

Jelly 11. Jan 2008 14:47

Re: fehler beim aktualisieren
 
Les dich mal in Datenbankdesign ein...

Jede Tabelle sollte einen eindeutigen Primärschlüssel haben. Dazu bieten sich z.B. Autoincrement Spalten an. Der Primärschlüssel sollte keine zusätzliche Information beinhalten. (Rechnungsnr wäre z.B. kein Kandidat für einen Primärschlüssel).
Der Primärschlüssel dient dazu, einen Datensatz eindeutig zu indentifizieren. Alle Datenbanken sind mengenbasiert, d.h. es gibt keine direkte Reihenfolge. Wenn du eine Kiste mit Legosteinen hast, steht jeder Legostein für einen Datensatz, mit gewissen Eigenschaften (Farbe, Grösse, Gewicht, usw). Wenn du aber jetzt 2 identische Legosteine in die Kiste schmeisst, sie gut mischst, wirst du sie nicht mehr unterscheiden können. Und wenn ich dich frage, hole bitte den einen roten raus, kannst du den nicht von dem anderem unterscheiden. Du hast also ein Problem, es sei denn du hast jeden Legostein vorher eindeutig gekennzeichnet (z.B. vor dem in die Kiste schmeissen fortlaufend numeriert). Wenn ich dich weiter frage: gib mir den Roten. Dann kannst du natürlich weiter mir nur die beiden roten liefern (z.B. N° 432 und 782). Wenn ich aber, bevor ich dich frage, mir selbst die Nummer merke, so werde ich meine Frage anders formulieren: Gib mir Stein Nr. 432. Und du wirst ihn finden.

Und genauso arbeiten Datenbanken.

Indizes dienen dazu, Dinge schneller zu finden. Wenn du 1000000 Legosteine in deiner Kiste hast, und darunter nur 10 rote, kommst du trotzdem nicht drum rum, alle Steine einzeln zu betrachten, und zu kucken, ob er rot ist. Wenn ja, nimm ihn raus. Das ist natürlich ein Haufen Arbeit, und kostet etlich Zeit. Indizes sind sozusagen eine Art vorsortierte Kiste. Und in dieser Sortierung werden die roten Steien alle beieinander liegen. Deine Suche wird dadurch erheblich schneller.... genauso bei Datenbanken.

Es gibt noch viele andere Dinge, die man beachten muss beim Datenbankdesign, aber wie gesagt.... Les dir erst mal ein paar tutorials durch, und stelle danach die konkreten Fragen dazu.

PS: Ich hätte Lehrer werden sollen. Also diese Legokistenvergleich gefällt mir immer besser :mrgreen:

DeddyH 11. Jan 2008 14:51

Re: fehler beim aktualisieren
 
Ein Primärschlüssel ist ein eindeutiger Wert, ein Index hingegen nicht zwangsläufig (sehr kurze Umschreibung ;) ).

Eine Methode fällt mir noch ein:
- Erzeugen einer temporären Tabelle (mit Primärschlüssel und Identity)
- Kopieren der Originaltabelle in die temporäre
- Ändern der Tabellenstruktur der Originaltabelle (evtl. durch Löschen und Neuanlage)
- Zurückkopieren der Daten
- Löschen der temporären Tabelle

Delphi-Phil 11. Jan 2008 14:57

Re: fehler beim aktualisieren
 
okay jetzt ist mir einiges klar!

Wie erstelle ich jetzt also ein primärschlüssel im sql server mit dem angegebenen tool???

Delphi-Phil 11. Jan 2008 15:17

Re: fehler beim aktualisieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
so ich habe alles hinbekommen! ein primärschlüssel ist erstellt. aber jetzt kommt das...habe wieder einen screen angehangen!!

gruß phil

DeddyH 11. Jan 2008 15:34

Re: fehler beim aktualisieren
 
Wobei kommt denn die Meldung? Zumindest kann ich Dir sagen, dass Du wohl versuchst, NULL in ein Feld zu schreiben, dass als NOT NULL definiert wurde.

Delphi-Phil 11. Jan 2008 15:37

Re: fehler beim aktualisieren
 
ja wenn ich einen neuen datensatz einfüge! der fehler kommt weil das primarykey feld keinen neuen wert einfügt und wenn ich dann daten eingeben wie name und straße und save klicke dann kommt der fehler...

DeddyH 11. Jan 2008 15:38

Re: fehler beim aktualisieren
 
Hast Du denn Identity eingestellt?

Delphi-Phil 11. Jan 2008 15:39

Re: fehler beim aktualisieren
 
wo soll ich das einstellen?? was bewirkt das?

DeddyH 11. Jan 2008 15:50

Re: fehler beim aktualisieren
 
Das bewirkt, dass der Wert automatisch ermittelt wird (Autoincrement).

Delphi-Phil 11. Jan 2008 16:03

Re: fehler beim aktualisieren
 
jetzt hat es endlich funktioniert! ka warum es nicht so richtig ging... egal vielen dank, jetzt geht alles!!


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