Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TypecastError bei Öffnen Access-Tabelle (https://www.delphipraxis.net/67502-typecasterror-bei-oeffnen-access-tabelle.html)

FBrust 15. Apr 2006 17:02

Datenbank: Access • Version: 2000 • Zugriff über: ADO

TypecastError bei Öffnen Access-Tabelle
 
Hallo,

mit dem Code
Delphi-Quellcode:
    with dmADO do begin
      ADOConn.Connected := True;
      with qryDelPPCTable do begin
        SQL.Clear;
        SQL.Text := 'DELETE FROM "NEUESTE ALBEN"';
        ExecSQL;
      end;
      tblPPC_MP3.Open;
    end;
leere ich eine Tabelle in einer Access-DB und öffne sie anschließend, damit ich wieder Daten hineinschreiben kann.

Allerdings erhalte ich beim Open-Befehl die Exception :
Zitat:

EVariantTypeCastError: Variante des Typs (null) konnte nicht in Typ (String) konvertiert werden".
Allerdings sagt mir diese Meldung nichts, da hier ja nur eine Tabelle geöffnet werden soll.

Hat vielleicht jemand einen Tip?

Gruß
Frank

marabu 15. Apr 2006 18:10

Re: TypecastError bei Öffnen Access-Tabelle
 
Hallo Frank,

der von dir gezeigte Code findet sich so bestimmt nicht in deinem Programm. Ich würde erwarten, dass die Verbindung zu Access einmal zu Beginn des Programms aufgebaut wird. Die Zuweisung an SQL.Text macht ein vorheriges SQL.Clear überflüssig. Und wenn du schon mit einer ADOTable arbeitest, dann könntest du auch die Methode DeleteRecords() zum Leeren der Tabelle verwenden. Andernfalls solltest du die Table zuerst schließen, damit du sie wieder öffnen kannst - oder die Methode Requery() verwenden. Oder noch besser ganz auf Queries umstellen.

Freundliche Grüße vom marabu

FBrust 15. Apr 2006 19:11

Re: TypecastError bei Öffnen Access-Tabelle
 
Hallo Marabu,

danke für Deine Antwort.

Du hast natürlich recht, eine Zuweisung zu SQL.Text macht das vorherige .Clear überflüssig. :oops:

Das Programm, in dem dieser Code enthalten ist, arbeitet normalerweise mit einer Firebird-Datenbank. Da aber Daten auf einen PocketPC übertragen werden sollen, muss ich diese Daten aus der Firebird-DB holen und in die Access-Datenbank schreiben, daher die ADO-Tabelle.

Der Code wird auch erst beim Beenden des Programms ausgeführt, so dass ich die Verbindung erst dann aufbaue, wenn ich sie brauche, ich halte es einfach nicht für notwendig, die ganze Zeit die Verbindung zur Access-DB aufrechtzuerhalten.

Ich hab den Code jetzt so geändert:
Delphi-Quellcode:
    with dmADO do begin
      ADOConn.Connected := True;
      tblPPC_MP3.Open;
      tblPPC_MP3.DeleteRecords();
    end;
Allerdings erhalte ich die gleiche Fehlermeldung.. ..

Gruß
Frank

marabu 15. Apr 2006 19:27

Re: TypecastError bei Öffnen Access-Tabelle
 
Wann du deine Verbindung aufbaust, das weißt du sicher am besten. Ist es immer noch der Open-Befehl, der die Exception wirft? Hast du vielleicht irgendwelche event handler an die Table geknüpft?

marabu

FBrust 16. Apr 2006 11:57

Re: TypecastError bei Öffnen Access-Tabelle
 
Hallo,

also beim Ausführen des Programms im Einzelschritt kommt die Exception beim Ausführen der Open-Anweisung. Eventhandler gibt es bei dieser Tabelle keine, es sollen nur Werte hineingeschrieben werden.


Ich geh nochmal die ADO-Einstellungen durch, vielleicht fehlt ja da irgendwas.


Gruß
Frank

FBrust 18. Apr 2006 17:27

Re: TypecastError bei Öffnen Access-Tabelle
 
Hallo,

ich find keine fehlenden Einstellungen, ausserdem: Wenn ich im Entwurfsmodus erst die Verbindung aktiviere und dann die Tabelle, funktionierts einwandfrei.

Gibt es noch andere Möglichkeiten (ausser BDE) auf eine Access-Tabelle zuzugreifen?


Gruß
Frank

marabu 18. Apr 2006 19:46

Re: TypecastError bei Öffnen Access-Tabelle
 
Hallo Frank,

kannst du ein Minimal-Projekt erstellen, mit dem man den Fehler reproduzieren kann? Packe eine Access-Datenbank mit einer Tabelle und mindestens einem Datensatz dazu - ich habe kein Access auf meinem Rechner.

Grüße vom marabu

FBrust 19. Apr 2006 18:05

Re: TypecastError bei Öffnen Access-Tabelle
 
Hallo,

mach ich am Wochenende, danke für Dein Angebot.


Gruß
Frank


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