![]() |
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 |
Re: fehler beim aktualisieren
Wie lädst du neu?
|
Re: fehler beim aktualisieren
ich habe erstmal nur zum testen ne db navigator genommen!
|
Re: fehler beim aktualisieren
Und wie sieht die Abfrage aus?
|
Re: fehler beim aktualisieren
nen ganz normales tabel (ADO) und dann nen datasource!
|
Re: fehler beim aktualisieren
Versuchs mal mit einem TADODataSet/TADOQuery
|
Re: fehler beim aktualisieren
es kommt genau der gleiche fehler!
|
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. |
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?
|
Re: fehler beim aktualisieren
Nachträglich wohl problematisch, eine Integer. oder GUID-Spalte anlegen und Property Identity abhaken.
Grüße Mikhal |
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 |
Re: fehler beim aktualisieren
mit id einstellungen, meine ich: wie kann ich eine fortlaufende id nummer vergeben !?!?!
Gruß Phil und ein schönes Wochenende!! |
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".
|
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)
|
Re: fehler beim aktualisieren
Der SQL-Server ist nicht meine Welt ;)
|
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!!?!?!?
|
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: |
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 |
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??? |
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 |
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.
|
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...
|
Re: fehler beim aktualisieren
Hast Du denn Identity eingestellt?
|
Re: fehler beim aktualisieren
wo soll ich das einstellen?? was bewirkt das?
|
Re: fehler beim aktualisieren
Das bewirkt, dass der Wert automatisch ermittelt wird (Autoincrement).
|
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 14:16 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-2025 by Thomas Breitkreuz