Typenproblem zwischen Access und C++
-
ja den feldeditor (doppelklick auf ADOQuery-Komponente) habe ich benutzt: Ja ändern der Felder geht ja nicht, deshalb muss ich ja immer ein neues feld erstellen! logischerweise muss da vorher das alte feld löschen, da man sonst zwei felder mit gleichen namen hätte, und dann gibts nen fehler!
das problem ist denke ich, dass der compiler/c++ builder (oder wer auch immer) das accessfeld immer als integer erkannt wird (warum auch immer ...)
-
Wie? Was? Ich kann dir nicht folgen.
Aber, im Feldeditor kannst Du natürlich nichts ändern. Dort wird nur angezeigt, was sich tatsächlich in der Tabelle befindet (von den Möglichkeiten mit berechneten Feldern abgesehen).
-
Also egal, ob ich in Access Währung, Standardzahl, Allgemeinzahl, Festkommazahl angebe, in der Fehlermeldung steht immer "xxx erwartet, Integer gefunden"
xxx steht für den angegebenen Datentyp im Feldeditor.
-
Lösch bitte mal alle Felder raus und füge sie neu ein. Nichts von Hand verstellen oder hinzufügen. Warum stellst Du da überhaupt etwas von Hand ein?
Der Feldeditor muss natürlich mit der endgültigen Version der Datenbank verwendet werden. Wenn in der Datenbank noch etwas zu ändern ist, prüfe das zuerst und bringe gegebenenfalls die Datenbank auf den aktuellen Stand. Dafür brauchst Du weder TDBEdits noch TADOQuerys... Dafür reicht ein simples TADOCommand-Objekt.
-
klar, ich lösche jetzt mal eben schnell 40-50 felder und füge sie danach wieder schnell ein
-
MichelM (Gast) schrieb:
klar, ich lösche jetzt mal eben schnell 40-50 felder und füge sie danach wieder schnell ein
Dauert doch noch 10 Sekunden?!? Rechte Maustaste -> alle Felder hinzufügen und schon bist du fertig.
-
Nein das funktioniert nicht! Denn dann gibts ne Fehlermeldung:
"Ihr Netzwerkzugriff wurde unterbrochen. Schließen Sie die Datenbank, und öffnen Sie sie erneut, um den Vorgang fortzusetzen."
Ich habe aber keine Datenbank offen ...
Aber irgendwie schweift das grad von meinem Problem ab, oder?
-
Vielleicht.
Ich weiß immer noch nicht so wirklich wo das Problem liegt...
Ich hab hier gerade keine IDE, aber du verwendest doch mit Sicherheit eine TADOConnection? Die sollte eine Eigenschaft Connected haben. Steht die auf true?
Liegt die DB denn lokal, oder auf dem Netzwerk?
-
Also ich denke, das Problem liegt eher in Access: Ich habe jetzt mal versucht, per Hand Daten in einzelnen Felder einzufügen, nur mit mäßigem Erfolg. Ich habe das Feld als Festkommazahl eingestellt, kann aber nur vor dem Komma Ziffern eingeben. Alle nach dem Komma eingegebenen Ziffern verschwinden, weil er auf ganze Zahlen rundet ... Genau das Gleiche bei Standardzahl sowie Währung, Euro und Allgemeinzahl.
Die Datenbank liegt lokal in einem Ordner im Projektpfad. Ich benutze eine ADOConnection, aber Connected = False. Wenn ich die auf True stellen möchte, krieg ich wieder die Meldung: "Ihr Netzwerkzugriff wurde unterbrochen. Schließen Sie die Datenbank, und öffnen Sie sie erneut, um den Vorgang fortzusetzen."
-
Dann funktioniert die doch aber auch zur Laufzeit nicht, oder?
-
klar funktoiniert die! kann ja alle anderen ganzen zahlen, strings, memos usw. in die datenbank einfügen!
-
Kann nicht sein. Das muß zur Designtime funktionieren, wenn das auch zur Laufzeit funktioniert. Oder du unterschlägst uns wesentliche Informationen.
-
ich unterschlag nix!
habe eine ADOQuery und DataSource. DataSource hat als DataSet-Eigenschaft die ADOQuery, die ADOQuery per Connection-Eigenschaft verbunden mit ADOConnection. Die ADOConnection ist mit der Accessdatenbank (*.mdb) verbunden.
Im Feldeditor der Query die Felder per Hand eingefügt.Wie gesagt, es funktioniert ja, ich habe doch in der Datenbank nachgeschaut, wo die Daten eingetragen wurden...
Der Fehler muss irgendwie in Access liegen, denn dort kann man keine rationalen Zahlen (also nur ganze Zahlen) eingeben.