Einzelnen Beitrag anzeigen

Sicho

Registriert seit: 2. Mär 2006
18 Beiträge
 
Delphi 2006 Professional
 
#1

Buchstabensalat in Access-Tabelle

  Alt 21. Aug 2006, 05:32
Datenbank: Access • Version: 2003 • Zugriff über: ADO
Hallo,

in meinem Programm lese ich MP3-Dateien aus einem Folder und schreibe sie untereinander in eine ListBox.

Danach ermittle ich für jede MP3-Datei die ID3-Tags, und zwar mit dem Code den man unter Delphi-Source finden kann. Dieser Code funktioniert auch einwandfrei.

Was ich nun tun will, ist für jede Datei einen Eintrag in einer Tabelle einer Access-Datenbank anzulegen. Die DB und die Tabelle habe ich in Access selbst kreiert. Ich greife mit einer ADOConnection auf die Datenbank zu. Mittels ADOQuery und folgendem Code fülle ich dann die Tabelle namens 'tblID3':

Delphi-Quellcode:
 for I := 0 to lbResults.Count - 1 do
         begin
          Read_ID3Tag(lbResults.Items[I]); //hier lese ich die ID3-Tags aus
          ADOQuery1.SQL.Text := 'SELECT * FROM '+'tblID3'+' WHERE 0=1';
          ADOQuery1.Open;
          ADOQuery1.Append;
          ADOQuery1['ListID'] := I;
          ADOQuery1['ID'] := ID3Tag.ID;
          ADOQuery1['Title'] := ID3Tag.Title;
          ADOQuery1['Artist'] := ID3Tag.Artist;
          ADOQuery1['Album'] := ID3Tag.Album;
          ADOQuery1['Year'] := ID3Tag.Year;
          ADOQuery1['Comment'] := ID3Tag.Comment;
          ADOQuery1['Genre'] := ID3Tag.Genre;
          ADOQuery1['Sample'] := ID3Tag.Sample;
          ADOQuery1['Length'] := ID3Tag.Length;
          ADOQuery1['Bits'] := ID3Tag.Bits;
          ADOQuery1['Vers'] := ID3Tag.Vers;
          ADOQuery1['Layers'] := ID3Tag.Layers;
          ADOQuery1.Post;
         end;
An und für sich funktioniert dies auch prächtig, NUR nicht jedesmal. Wenn ich jetzt mehrere MP3's in die Listbox schreiben lasse und dann bei einer nach der anderen die ID3-Tags auslese und sie dann in die Tabelle schreibe, habe ich bei vielen Einträgen nur Buchstabensalat... z.B. nur "UUUUUU" bei Stringfeldern oder "aaaaaaaaa".
Auffällig ist, dass es jedesmal bei den gleichen Files auftritt. Also dachte ich natürlich gleich "Fehler beim Auslesen der ID3-Tags". Allerdings habe ich den Code von Delphi-Source mehrmals überprüft und die Zugriffe auf den Header etc. auch mit MP3-Header-Informationen aus dem Netz (z.B. mp3-tech) überprüft - und da scheint echt alles zu passen.

Demzufolge glaube ich daran, dass ein Fehler beim Einfügen der Daten in die Tabelle unterläuft. Ist es vielleicht irgendeine Einstellung bei der ADOQuery-Komponente oder bei der ADOConnection? Ich hab' mich ehrlich gesagt noch nicht soviel mit DB's in Delphi beschäftigt und bin deshalb auf dem Gebiet recht unerfahren, weswegen ich denke, dass ich ja irgendeine Kleinigkeit übersehen haben könnte.

Achja, was vielleicht noch wichtig ist: Ich bekomme beim Ausführen meines Programmes, sobald ich beginne, die Werte in die DB zu schreiben, die Compilermeldung "Der schreibgeschützte Eigenschaftswert wurde nicht festgelegt". Ich kann dann allerdings auf "Continue" drücken und das Programm läuft ohne Problem weiter - bis halt eben diesen Buchstabensalat bei manchen Einträgen ausgenommen. Kann diese Meldung evtl. auf das eigentliche Problem hinweisen?

Ich hoffe ja jetzt dass es sich nur um einen typischen Anfängerfehler handelt - dann wird's nämlich recht leicht zu beseitigen sein *gg* In dem Sinne bin ich auf eure Antworten gespannt.

Grüße,
Sicho
  Mit Zitat antworten Zitat