Announcement

Collapse
No announcement yet.

Probleme mit TADOQuery in Package

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Probleme mit TADOQuery in Package

    Hallo,

    habe ein Problem mit einer TADOQuery-Komponente bei der Benutzung innerhalb eines Package. Hier erstmal der Sourcecode:

    function Tta_Excel.getValue(AName,ADefault:string):string;
    var
    adoConn : TADOConnection;
    adoQuery : TADOQuery;
    begin
    result := ADefault;
    if (Length(Trim(AName)) <> 0) then
    begin
    adoConn := TADOConnection.Create(nil);
    try
    adoConn.LoginPrompt := False;
    adoConn.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0; '+
    'Data Source=' +
    'myFile.xls'+
    ';Extended Properties=Excel 8.0';
    adoConn.Open;
    //
    adoQuery := TADOQuery.Create(nil);
    try
    adoQuery.Connection := adoConn;
    adoQuery.LockType := ltReadOnly;
    adoQuery.SQL.Text := 'Select * from [Index$] where (Name=:Name)';
    adoQuery.Parameters.ParamByName('Name').DataType := ftString;
    adoQuery.Parameters.ParamByName('Name').Value := AName;
    adoQuery.Prepared := true;
    adoQuery.Open;
    if (not adoQuery.FieldByName('Value').IsNull) then
    result := adoQuery.FieldByName('Value').Value;
    finally
    adoQuery.Close;
    adoQuery.Free;
    end;
    finally
    adoConn.Close;
    adoConn.Free;
    end;
    end;
    end;



    Eigentlich soll die Funktion nur innerhalb einer vorhandenen Exceldatei ein Name-Wert-Paar finden und den Wert zurückgeben. Binde ich die Funktion direkt in das Programm (nicht in das Package) ein, funktioniert das ganze auch. Probiere ich es über das Package, bekomme ich die Fehlermeldung " Fehlt!". Nicht wirklich aussagekräftig.
    Die Delphi-Version die ich einsetze ist D5EE, SP1 unter Win2000, SP4.

    Mir ist klar, dass die Delphi-Version veraltet ist, aber es ist die vom Kunden vrogegebene Version. Hat jemand eine Idee, woher der Fehler kommen könnte?

    Danke im Voraus.
    Christian Weber

  • #2
    Hast du schon durgedebugget wo er genau hängen bleibt.
    Sind auch alle Updates (vor allem ADOExpress-Update) eingespielt?

    Comment


    • #3
      Sorry, hab ich vergessen anzugeben. Die Fehlermeldung kommt in der Zeile:

      adoQuery.Open;

      ADOExpress-Updates habe ich noch nicht eingespielt. Die Datei dclado50.bpl ist noch vom 03.02.2000 05:01. Werde mir das Update runterladen (Link schon gefunden), installieren und nochmal testen. Wenn es dann nicht geht, melde ich mich nochmal. Ansonsten schon mal Danke. ;-)

      Comment


      • #4
        Hmm, welche Dateien werden denn durch das Update geändert? Die Dateien
        dclado50.bpl, 03.02.2000 05:01
        dclado50.dcp, 03.02.2000 05:01
        adodb.dcu, 06.11.2000 05:01
        ändern sich jedenfalls nicht und der Fehler bleibt auch erstmal wie beschrieben. Wie kann es eigentlich sein, dass die adodb.dcu später generiert wurde als die bpl (dcp)?

        Comment


        • #5
          Hallo,

          habe das ganze jetzt nochmal unter Delphi 2005 Prof. SP3, Windows Vista, Office 2007 nachgestellt. Hier bekomme ich die Fehlermeldung schon, wenn ich die Funktion in eine normale Anwendung einbinde. Kann das jemand bestätigen? Habe als Anhang mal das 2005er Projekt hochgeladen. Danke schon mal im voraus.
          Attached Files

          Comment


          • #6
            Hab die Ursache für das Problem gefunden. Die Suchspalte (Name) in der Exceldatei wurde von mir per Programm als "adLongVarWChar" angelegt. Definiere ich diese Spalte als "adVarWChar" gibt es kein Problem.
            Leider hilft mir das nur bedingt weiter. Hat jemand eine Idee, was man tun muss, um über eine "adLognVarWChar"-Spalte suchen zu können?

            Comment

            Working...
            X