xaero1982
Goto Top

Access - Leerer Eintrag trotz Primary Key?

Hi,

also ich habe eine DB in die Computerdaten von jedem Computer automatisch eingetragen werden.

U.a. die Seriennummer eines PCs.

Nun gibt es Fälle, wo keine Seriennummer ausgelesen werden kann. Für diesen Fall habe ich gesagt, ok, statt der Seriennummer soll er den Computernamen als Seriennummer eintragen und einen extra Vermerk in einer Datei setzen.

So, wenn ich die Seriennummer manuell leer setze geht alles wunderbar.

Wenn ich einen PC habe, auf dem kein WMI ist (NT 4) gehts auch wunderbar.

Nun habe ich aber einen w2k PC (mit WMI), bei dem aber keine Seriennummer ausgelesen werden kann, aber dennoch setzt er einen PrimaryKey! Einen leeren!

So, da ich auf die Seriennummer aber einen Link setze um Details dieses Computers anzeigen zu lassen existiert hier kein Link.
Des weiteren ist das Problem, dass bei der Auflistung (ich habe ein Dropdownmenü mit allen Computern) immer sofort dieser besagte PC ohne Seriennummer angezeigt wird ...

???? HÄÄÄÄ????

Edit: Seriennummer = Primary Key

Content-Key: 42366

Url: https://administrator.de/contentid/42366

Printed on: April 23, 2024 at 18:04 o'clock

Member: AndreasHoster
AndreasHoster Oct 17, 2006 at 13:50:16 (UTC)
Goto Top
Sieht so aus, als ob entweder Deine Programmierung um leere Seriennummern zu erkennen fehlerhaft ist oder die Seriennummer nicht wirklich leer ist (eventuell ein Leerzeichen?) oder die Seriennummer ein Format ist, den die Felddefinition der Datenbank nicht zulässt.

Und was Deine Überschrift angeht:
Was hat ein leeres Feld und der Primary Key miteinander zu tun?
Member: Xaero1982
Xaero1982 Oct 19, 2006 at 08:44:25 (UTC)
Goto Top
Sieht so aus, als ob entweder Deine
Programmierung um leere Seriennummern zu
erkennen fehlerhaft ist
Sie ist nicht fehlerhaft, da sie in anderen Fällen wo die Seriennummer nicht ausgelesen werden kann einwandfrei funktioniert.

oder die Seriennummer
nicht wirklich leer ist (eventuell ein
Leerzeichen?) oder die Seriennummer ein
Format ist, den die Felddefinition der
Datenbank nicht zulässt.

Daran habe ich auch schon gedacht, denn wenn ich mir das Feld ansehe ist irgendwas drin. Sieht aber eher aus wie ein leerzeichen. Da ich dies aber in Access mit der Einstellung: keine leere Zeichenfolge ausgeschlossen habe muss es etwas sein, dass access nicht darstellen kann. Bzw. grundsätzlich nicht dargestellt werden kann.

Und was Deine Überschrift angeht:
Was hat ein leeres Feld und der Primary Key
miteinander zu tun?

ehm ... ein Primary Key kann und darf eigentlich _NIE_ leer sein. Deswegen die überschrift. Würde es sich um ein normales Feld handeln und nicht um den PKey wäre das wohl wurst, da diese sehr wohl leer sein dürfen.
Member: AndreasHoster
AndreasHoster Oct 19, 2006 at 08:50:44 (UTC)
Goto Top
Ein Primary Key darf nicht Null sein, aber ein String mit einem Leerzeichen durchaus.
Und leere Zeichenfolge bei Access meint einen Leerstring "" und nicht " ".
Mach doch einfach ein Trim auf die Seriennummer, bevor es weitergeht, dann sind garantiert keine Leerzeichen vorne oder hinten dran.
Und ich hatte nicht rausgelesen, daß die Seriennummer das Primary Key Feld ist.
Member: Xaero1982
Xaero1982 Oct 19, 2006 at 12:51:09 (UTC)
Goto Top
Ein Primary Key darf nicht Null sein, aber
ein String mit einem Leerzeichen durchaus.
Das ist mir klar ....

Und leere Zeichenfolge bei Access meint
einen Leerstring "" und nicht
" ".
Access meint damit " " und nicht "" ...weil "" heißt, dass es nicht gesetzt sein muss...
Mach doch einfach ein Trim auf die
Seriennummer, bevor es weitergeht, dann sind
garantiert keine Leerzeichen vorne oder
hinten dran.
ehm ...
der kram wird via vbscript in die db geschrieben .. sprich da muss ich wenn ansetzen

Und ich hatte nicht rausgelesen, daß
die Seriennummer das Primary Key Feld ist.
stimmt *erröt*
Member: AndreasHoster
AndreasHoster Oct 19, 2006 at 13:18:32 (UTC)
Goto Top
Also mein Access 2003 akzeptiert " " bei Leere Zeichenfolge. Im Englischen heist die Einstellung auch AllowZeroLength und " " hat Länge 1.
Null und "" ist auch nicht daselbe.
Null bedeutet, man hat den Wert nicht initialisiert hat. "" bedeutet, man hat reingeschrieben daß nichts drin ist.
Member: Xaero1982
Xaero1982 Oct 19, 2006 at 18:28:35 (UTC)
Goto Top
Sorry, wenn ich sage er soll "" reinschreiben sagt er mir is nicht weil PKey nicht leer sein darf... selbiges gilt für " "!
Member: Biber
Biber Oct 19, 2006 at 18:51:21 (UTC)
Goto Top
Moin Xaero1982,

das sind jetzt aber unterschiedliche Aspekte, die hier vermischt werden.

Die letzte philosophische Diskussion: "Wenn ich sage, er soll "" reinschreiben.."etc....

-> beweist wenig. Wir wissen doch nur, das Access oder sonstige GUI-Tools nichts anzeigen.
Wir wissen nicht, ob die Länge dieses PK = 0 ist (was ich auch nicht glaube).
Prüfe doch erstmal im Access die Länge dieses "leeren" PKs und dann, wenn > 0, den Inhalt mit chr() oder Hex() oder was immer Access zur Konvertierung hat.

Gruß
Biber