Daten aus ->FieldValues["artcode"] überprüfen
-
Ave,
ich versuche gerade in FormCreate() folgenden code unter zu bringen
int reservedArtcode[200]; for(int x = 0;x<=199;x++) reservedArtcode[x]=0; Table1->First(); if((Table1->FieldValues["artcode"]!=NULL)||(Table1->Eof==false)); { int x=0; do { reservedArtcode[x] = Table1->FieldValues["artcode"]; x++; }while(Table1->Eof==false); }jedoch gibt es immer eine Fehlermeldung bei
reservedArtcode[x] = Table1->FieldValues["artcode"];Variante des Typs (Null) konnte nicht in Typ (Integer)konvertier werden.

Ich habe mir daraufhin alle Tabelleneinstellungen angeguck und die Spalte "artcode" hat für alle werte Integer definiert. Wo liegt denn der Fehler?

Das ganze sollte so ablaufen das die Form erstell wird und aus der Spalte "artcode" alle Daten ausgelesen werden, welche sofort in einen Vektor reservArtcode[] geschrieben werden.
Natürlich soll er das nicht tun wenn "artcode" leer ist.
Könnt ihr mir helfen?
Bahala Na!
-
schau mal bitte in der BCB-Hilfe was dir FieldValues zurückgibt, ich glaube kaum dass es integer ist
vielleicht solltest du auch gleich mal nach FieldByNames und AsInteger schauen

-
mist geplappert...

-
Vorab ein Table ist die falsche Komponente für so etwas. Dafür gibt es TQuery...(Und noch einmal: TTable und TQuery (und somit auch die BDE) sollten nicht mehr verwendet werden, da diese End-Of-Life sind.)
Was ist der Sinn der ganzen Übung? Falls es nur darum geht, auszuschließen, dass ein artcode mehrfach verwendet werden kann, erstelle in der Datenbanktabelle einen Primary Key oder eine UNIQUE-Constraint.
-
Also Rückgabewert is VARIANT (Da ist ja Integer auch betroffen)
Ich weiss das TTable etc. Schon lange tot ist. Aber für all die kleinen progs welche ich mache reicht es volkommen aus.
Einen Schlüssel habe ich schon. Der User hat aber die Möglichkeit eingaben zu machen und wenn er einen Doppelten Eintrag machen will muss ich das verhindern. Also war der Gedanke ich lade mir direkt all die werte in einen Vektor und bei Eingabe wird geprüft.
-
dein Beispiel funktioniert, allerdings hast du ein Table1->Next() vergessen, somit würde das ganze Feld immer nur mit dem ersten Datensatz gefüllt.
Deine Fehlermeldung rührt daher, dass du die if-Abfrage (!=NULL) ausserhalb der while-Schleife machst, deshalb kann er leere Felder nicht umwandeln, da bei diesen der Typ nicht bekannt ist, deshalb nochmal mein Hinweis auf FieldByName und
BCB-Hilfe zu FieldValues schrieb:
Hinweis
Da die Eigenschaft FieldValues immer Varianten verwendet, erfolgt der Zugriff auf die Daten langsamer als im nativen Feldformat (d.h. mit der Eigenschaft AsXXX eines Feldes). Dies wirkt sich besonders auf Anwendungen aus, in denen große Datenmengen verarbeitet werden.
-
Danke für die Hilfe

Habs jetzt doch anders gemacht (bisschen einfacher)
Trotzdem Danke hat mir geholfen
