AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi MySQL - Feld nicht gefunden
Thema durchsuchen
Ansicht
Themen-Optionen

MySQL - Feld nicht gefunden

Ein Thema von mjenke · begonnen am 1. Sep 2011 · letzter Beitrag vom 1. Sep 2011
 
mjenke

Registriert seit: 28. Mär 2003
Ort: Bonn
131 Beiträge
 
#1

MySQL - Feld nicht gefunden

  Alt 1. Sep 2011, 11:43
Datenbank: MySQL • Version: 5.x • Zugriff über: ODBC
Hallo, alle miteinander,


ich habe ein Problem beim Zugriff auf eine externe MySQL-Datenbank, das ich nicht ganz verstehe. Die gleiche Datenbank lokal bereitet hingegen keine Probleme...

Zur Erläuterung:

Ich habe auf einem lokalen MySQL-Server (Version 5.5.8) eine Datenbank, in der unter anderem eine Tabelle mit folgendem Aufbau enthalten ist:

Code:
CREATE TABLE `tbfhe` (
  `id` int(10) NOT NULL auto_increment,
  `idlief` int(10) default NULL,
  `seite` int(10) default NULL,
  `nr` int(10) default NULL,
  `tocub` text,
  `leitsatz` text,
  `fstag` int(10) default NULL,
  `fsmonat` int(10) default NULL,
  `fsjahr` int(10) default NULL,
  `akzsen` varchar(20) default NULL,
  `akzsend` int(10) default NULL,
  `akzbuch` varchar(20) default NULL,
  `akznr` varchar(20) default NULL,
  `akznrd` int(10) default NULL,
  `akzjahr` int(10) default NULL,
  `akzzus` varchar(30) NOT NULL default '',
  `eintyp` varchar(30) default NULL,
  PRIMARY KEY (`id`)
);
Die Verbindung zur Datenbank wird über ODBC (MySQL ODBC 5.1 Treiber) aufgebaut.
Über ein TQuery-Objekt setze ich folgende Abfrage auf die Datenbank ab:

Code:
SELECT DISTINCT t1.*, t2.band, t2.lief FROM tbfhe t1 LEFT JOIN tbandlief t2 ON t1.idlief = t2.id LEFT JOIN tnormen t3 ON t1.id = t3.idbfhe LEFT JOIN tgesetze t4 ON t4.id = t3.idgesetz WHERE t1.idlief = 177 ORDER BY t1.nr
Wenn ich die Daten auslese und weiterverarbeite, ist auch alles in Ordnung:

Delphi-Quellcode:
with FQuery do begin
    SQL.Clear;
    SQL.Add ( Query );
    Open;
    if RowsAffected > 0 then begin
      SetLength ( BFHE^, RowsAffected );
      counter := 0;
      while not EOF do begin
        BFHE^[counter].ID := FieldByName ( 'id' ).AsInteger;
        BFHE^[counter].IDLIEF := FieldByName ( 'idlief' ).AsInteger;
        BFHE^[counter].SEITE := FieldByName ( 'seite' ).AsInteger;
        BFHE^[counter].NR := FieldByName ( 'nr' ).AsInteger;
        BFHE^[counter].TOCUB := _recodeFromMySQL ( FieldByName ( 'tocub' ).AsString );
        BFHE^[counter].LEITSATZ := _recodeFromMySQL ( FieldByName ( 'leitsatz' ).AsString );
        BFHE^[counter].FSTAG := FieldByName ( 'fstag' ).AsInteger;
        BFHE^[counter].FSMONAT := FieldByName ( 'fsmonat' ).AsInteger;
        BFHE^[counter].FSJAHR := FieldByName ( 'fsjahr' ).AsInteger;
        BFHE^[counter].AKZSEN := _recodeFromMySQL ( FieldByName ( 'akzsen' ).AsString );
        BFHE^[counter].AKZSEND := FieldByName ( 'akzsend' ).AsInteger;
        BFHE^[counter].AKZBUCH := _recodeFromMySQL ( FieldByName ( 'akzbuch' ).AsString );
        BFHE^[counter].AKZNR := _recodeFromMySQL ( FieldByName ( 'akznr' ).AsString );
        BFHE^[counter].AKZNRD := FieldByName ( 'akznrd' ).AsInteger;
        BFHE^[counter].AKZJAHR := FieldByName ( 'akzjahr' ).AsInteger;
        BFHE^[counter].AKZZUS := _recodeFromMySQL ( FieldByName ( 'akzzus' ).AsString );
        BFHE^[counter].EINTYP := _recodeFromMySQL ( FieldByName ( 'eintyp' ).AsString );
        BFHE^[counter].BAND := FieldByName ( 'band' ).AsInteger;
        BFHE^[counter].LIEF := FieldByName ( 'lief' ).AsInteger;
        SetLength ( BFHE^[counter].STICHWORTE, 0 );
        SetLength ( BFHE^[counter].NORMEN, 0 );
        SetLength ( BFHE^[counter].GRPMITGL, 0 );
        Inc ( counter );
        Next;
      end;
    end;
    Close;
  end;
Problematisch wird es erst, wenn ich auf die externe MySQL-Datenbank zugreife. Diese Datenbank wurde mit den gleichen CREATE-Statements (gleiche SQL-Datei) erzeugt und auch mit den gleichen Daten gefüllt (durch das gleiche Perl-Skript, mit dem ich die Daten in die lokale MySQL-DB geschrieben habe). Datentechnisch sind sie also identisch.

Die externe MySQL-Datenbank läuft auf einem MySQL-Server der Version 5.0.51a.

Das eigentliche Problem ist nun: Alle Felder, die als "text" angelegt sind (also "tocub", "leitsatz" etc.), werden hier nicht gefunden. Sie tauchen in der FieldList des TQuery-Objekts überhaupt nicht auf.

In der Datenbank sind sie aber vorhanden und gefüllt, denn mit anderen Programmen (Perl) kann ich auf sie zugreifen und sie auslesen...

Kennt jemand von Euch dieses Verhalten?


Vielen Dank für die Hilfe!!

Matthias
Matthias Jenke
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz