Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Probleme mit mysql und zquery (zeoslib) (https://www.delphipraxis.net/105763-probleme-mit-mysql-und-zquery-zeoslib.html)

WS1976 29. Dez 2007 14:12

Datenbank: mysql • Version: 5.1 • Zugriff über: zeoslib 6... (neueste Version)

Probleme mit mysql und zquery (zeoslib)
 
Hallo,

folgendes Problem:
mysql Server läuft, Connection kann etabliert werden.
Sobald ich eine Tquery aufs Formular ziehe kann ich zwar noch kompilieren (erfolgreich) aber
wenn ich das Programm starten will erscheint:
an dieser Stelle:
Delphi-Quellcode:
procedure TZAbstractRODataset.Notification(AComponent: TComponent;
  Operation: TOperation);
begin
  inherited Notification(AComponent, Operation);

  if (Operation = opRemove) and (AComponent = FConnection) then
  begin
    Close;
    FConnection := nil;
  end;

  if (Operation = opRemove) and Assigned(FDataLink)
    and (AComponent = FDataLink.Datasource) then   FDataLink.DataSource := nil;
Dieser Code:
if (Operation = opRemove) and Assigned(FDataLink)
and (AComponent = FDataLink.Datasource) then

erzeugt eine Exception: Eaccessviolation...
Offensichtlich hab ich hiermit Probleme: FDataLink.Datasource

Kann mir jemand helfen?

Danke im Vorraus

DeddyH 29. Dez 2007 14:18

Re: Probleme mit mysql und zquery (zeoslib)
 
Und so?
Delphi-Quellcode:
if (Operation = opRemove) and Assigned(FDataLink) and Assigned(FDataLink.DataSource)
    and (AComponent = FDataLink.Datasource) then   FDataLink.DataSource := nil;

WS1976 29. Dez 2007 14:21

Re: Probleme mit mysql und zquery (zeoslib)
 
Hallo,
das würde aber bedeuten, dass im zeoslib ein Fehler enthalten ist.
Das ist jedoch so fundamental, dass ich eher glaube, dass der Fehler bei mir liegt.

Gruss Rainer

DeddyH 29. Dez 2007 14:23

Re: Probleme mit mysql und zquery (zeoslib)
 
Dann zeig doch mal Deinen Code, bei dem der Fehler auftritt (hatte gar nicht bemerkt, dass das der ZEOS-Code war :oops: ).

WS1976 29. Dez 2007 14:29

Re: Probleme mit mysql und zquery (zeoslib)
 
Hallo,
war völlig ohne Code. Hab nur die Komponenten Zconnection und Zquery auf das Formular gezogen.
Bei Zconnection alle notwendigen parameter eingegeben.
Beim create des Formulars passiert das schon.
Aber ist durch das abwählen des Compilerschalters erledigt.
Merkwürdig

Danke

DeddyH 29. Dez 2007 14:30

Re: Probleme mit mysql und zquery (zeoslib)
 
Wirklich merkwürdig, das hab ich bisher noch nicht gehabt.

Bernhard Geyer 29. Dez 2007 14:38

Re: Probleme mit mysql und zquery (zeoslib)
 
Ich würde mal eine älter libmysql.dll ausprobieren. MySQL verändert diese DLL ja ab und zu mal auf inkompatible art und weise.

WS1976 30. Dez 2007 10:37

Re: Probleme mit mysql und zquery (zeoslib)
 
Hallo,

das mit der Connection hat sich soweit erledigt, dass ich eine Verbindung aufbauen kann.
Zquery kann ich jetzt auf die Form schieben.
Sobald ich das Query aktiv mach will kommt Fehlermeldung:
Column with name "Extra" not found.

Was mach ich falsch?

Grüsse Rainer

DeddyH 30. Dez 2007 10:58

Re: Probleme mit mysql und zquery (zeoslib)
 
Wie sieht das SQL denn aus?

WS1976 30. Dez 2007 11:13

Re: Probleme mit mysql und zquery (zeoslib)
 
Hallo,

select * from test1

In der Tabelle test1 ist ein Spaltenname vorhanden und der heisst u1.

Grüsse
Rainer

DeddyH 30. Dez 2007 11:14

Re: Probleme mit mysql und zquery (zeoslib)
 
Da ist aber echt der Wurm drin. Hast Du gemäß mkinzler mal darauf geachtet, dass Du die passende libmysql.dll verwendest?

mkinzler 30. Dez 2007 11:15

Re: Probleme mit mysql und zquery (zeoslib)
 
Hast du Feldzugriffsfelder für den Query erzeugt?

WS1976 30. Dez 2007 11:24

Re: Probleme mit mysql und zquery (zeoslib)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
hab alle mögliche dll's probiert, immer das gleiche.
hab keine Feldzugriffsfelder definiert.

vielleicht mach ich auch grundsätzlich was verkehrt.
Hab einfach mal den Code angehängt.

Ich kriege schon Probleme wenn ich das Zquery aktiv schalten will.

Grüsse
Rainer

DeddyH 30. Dez 2007 11:26

Re: Probleme mit mysql und zquery (zeoslib)
 
In der IDE aktiv setzen oder was meinst Du?

WS1976 30. Dez 2007 11:27

Re: Probleme mit mysql und zquery (zeoslib)
 
Ja

mkinzler 30. Dez 2007 11:28

Re: Probleme mit mysql und zquery (zeoslib)
 
Ersetzt mal
Delphi-Quellcode:
qrmain.ExecSQL;
durch
Delphi-Quellcode:
qrmain.Open;

WS1976 30. Dez 2007 11:34

Re: Probleme mit mysql und zquery (zeoslib)
 
Hallo,
immer noch gleiche Fehlermeldung gleiches Problem.
Da das fanze schon in der IDE nicht funktioniert (Property active auf true) kann das auch nicht die Lösung des Problems sein.
Was gehört eigentlich in die properties (Zconnection)
Database und Catalog
Ich habe in beide einfach den Namen meiner Datenbank geschrieben.

Grüsse
Rainer

DeddyH 30. Dez 2007 11:35

Re: Probleme mit mysql und zquery (zeoslib)
 
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
   qrmain.Close;
   qrmain.SQL.Clear;
   qrmain.SQL.Add('select * from test1');
   //qrmain.ExecSQL;
   //qrmain.Active:=true;
   qrmain.Open;
end;
Und lass mal den Catalog leer.

Bernhard Geyer 30. Dez 2007 11:43

Re: Probleme mit mysql und zquery (zeoslib)
 
Welche 5.1er-Version hast du genau? Da es sich hierbei noch um Beta-Versionen handelt können auch noch Bugs vorhanden sein (was z.B. bei der 4.1.22er bei den Systemtabellen der Fall ist).

WS1976 30. Dez 2007 11:44

Re: Probleme mit mysql und zquery (zeoslib)
 
Hallo,
sorry aber genau die gleiche Fehlermeldung.
es wird an dieser Stelle eine Exception ausgelöst:
(Code gehört zu Zeoslib)

Delphi-Quellcode:
function TZAbstractResultSet.GetColumnIndex(const ColumnName: string): Integer;
begin
  Result := FindColumn(ColumnName);

  if Result < 1 then
    raise EZSQLException.Create(Format(SColumnWasNotFound, [ColumnName]));
end;
ColumnName beim 1. Durchlauf: TABLE_NAME
ColumnName beim 2. Durchlauf: Field
ColumnName beim 3. Durchlauf: Type
ColumnName beim 4. Durchlauf: Null
ColumnName beim 5. Durchlauf: Extra hier ist dann result = 0 und damit löst er
eine Exception aus.

Grüsse
Rainer

DeddyH 30. Dez 2007 11:45

Re: Probleme mit mysql und zquery (zeoslib)
 
Das Feld "Extra" scheint wirklich auf Systemtabellen hinzudeuten.

WS1976 30. Dez 2007 11:46

Re: Probleme mit mysql und zquery (zeoslib)
 
Hallo,
mysql 5.1 keine Beta.
Zeoslib 6.0.1 ist zwar Beta habs aber auch schon mit einer früheren Version versucht genau das gleiche Resultat.

Grüsse
Rainer

mkinzler 30. Dez 2007 11:48

Re: Probleme mit mysql und zquery (zeoslib)
 
Nach den Ergebnissen fragt er auch eine ab. Zeig mal den gesamten Code

WS1976 30. Dez 2007 12:01

Re: Probleme mit mysql und zquery (zeoslib)
 
Hallo,

folgender Ablauf:
Delphi-Quellcode:
   qrmain.Active:=true;
-->
procedure TZAbstractRODataset.InternalOpen;
var
  ColumnList: TObjectList;
begin
  CheckSQLQuery;
  CheckConnected;

  CurrentRow := 0;
  FetchCount := 0;
  CurrentRows.Clear;

  Connection.ShowSQLHourGlass;
  try
    { Creates an SQL statement and resultsets }
    if FSQL.StatementCount> 0 then
      ResultSet := CreateResultSet(FSQL.Statements[0].SQL, -1)
    else
      ResultSet := CreateResultSet('', -1);
    if not Assigned(ResultSet) then
    begin
      if not (doSmartOpen in FOptions) then
        raise Exception.Create(SCanNotOpenResultSet)
      else Exit;
    end;

    { Initializes field and index defs. }
    InternalInitFieldDefs;

    if DefaultFields and not FRefreshInProgress then
      CreateFields;
    BindFields(True);

    { Initializes accessors and buffers. }
    ColumnList := ConvertFieldsToColumnInfo(Fields);
    try
      RowAccessor := TZRowAccessor.Create(ColumnList);
    finally
      ColumnList.Free;
    end;
    FOldRowBuffer := PZRowBuffer(AllocRecordBuffer);
    FNewRowBuffer := PZRowBuffer(AllocRecordBuffer);

    FieldsLookupTable := CreateFieldsLookupTable(Fields);
    InitFilterFields := False;

    IndexFields.Clear;
    GetFieldList(IndexFields, FLinkedFields); {renamed by bangfauzan}

    { Performs sorting. }
    if FSortedFields <> '' then
      InternalSort;
  finally
    Connection.HideSQLHourGlass;
  end;
end;
bei InternalInitFieldDefs;

Delphi-Quellcode:
procedure TZAbstractRODataset.InternalInitFieldDefs;
var
  I, J, Size: Integer;
  AutoInit: Boolean;
  FieldType: TFieldType;
  ResultSet: IZResultSet;
  FieldName: string;
  FName: string;
begin
  FieldDefs.Clear;
  ResultSet := Self.ResultSet;
  AutoInit := ResultSet = nil;

  try
    { Opens an internal result set if query is closed. }
    if AutoInit then
    begin
      CheckSQLQuery;
      CheckConnected;
      ResultSet := CreateResultSet(FSQL.Statements[0].SQL, 0);
    end;
    if not Assigned(ResultSet) then
      raise Exception.Create(SCanNotOpenResultSet);

    { Reads metadata from resultset. }

    with ResultSet.GetMetadata do
    begin
      if GetColumnCount > 0 then for I := 1 to GetColumnCount do
      begin
---->>>> hier wird Exception ausgelöst:
        FieldType := ConvertDbcToDatasetType(GetColumnType(I));

        if FieldType in [ftString, ftWidestring, ftBytes] then
          Size := GetPrecision(I)
        else Size := 0;

        J := 0;
        FieldName := GetColumnLabel(I);
        FName := FieldName;
        while FieldDefs.IndexOf(FName) >= 0 do
        begin
          Inc(J);
          FName := Format('%s_%d', [FieldName, J]);
        end;

        with TFieldDef.Create(FieldDefs, FName, FieldType,
          Size, False, I) do
        begin
          {$IFNDEF FPC}
{$IFNDEF FOSNOMETA}
          Required := IsWritable(I) and (IsNullable(I) = ntNoNulls);
{$ENDIF}
          {$ENDIF}
{$IFNDEF FOSNOMETA}
          if IsReadOnly(I) then Attributes := Attributes + [faReadonly];
          Precision := GetPrecision(I);
{$ENDIF}
          DisplayName := FName;
        end;
      end;
    end;

  finally
    { Closes localy opened resultset. }
    if AutoInit then
    begin
      if ResultSet <> nil then
      begin
        ResultSet.Close;
        ResultSet := nil;
      end;
      if Statement <> nil then
      begin
        Statement.Close;
        Statement := nil;
      end;
    end;
  end;
end;
Grüsse Rainer (ich weiss dass das ne Zumutung ist aber besser krieg ichs nicht hin)

WS1976 31. Dez 2007 10:44

Re: Probleme mit mysql und zquery (zeoslib)
 
Hallo,
ich habe gegooglt und habe festgestellt, dass Andere das gleiche Problem haben.
Offensichtlich hängt das mit der Zeos-Version und dem benutzten Mysql ab.
Weitere Informationen wenn ich mehr herausgefunden habe.
Rainer

Bernhard Geyer 31. Dez 2007 10:57

Re: Probleme mit mysql und zquery (zeoslib)
 
Zitat:

Zitat von WS1976
mysql 5.1 keine Beta.

Und wo siehst du das? Ich sehe das es der Development-Zweig ist und damit Beta bzw. RC. Die 6.0er sind die Alpha-Versionen und gar nicht zu gebrauchen für Produktivsystem

WS1976 31. Dez 2007 11:33

Re: Probleme mit mysql und zquery (zeoslib)
 
OK Bernhard,

du hast recht. Ich habe das aber nicht aus dem Developer-Zweig geholt.
Nur am Dateinamen kann man erkennen, dass das eine RC Version ist.

Danke für den Hinweis.
Rainer
Guten Rutsch!

WS1976 31. Dez 2007 14:26

Re: Probleme mit mysql und zquery (zeoslib)
 
Hallo,

der Fehler tritt nicht mehr auf seit ich die Version 5.0 von Mysql installiert habe.
Noch eine Bemerkung:
Es wird einem nicht allzu leicht gemacht auf der MYSQL Homepage.
Dies waren meine ersten Erfahrungen mit MYsql und die waren so, dass ich zumindest
was den professionellen Bereich ( in meiner Firma ) betrifft stärkste Bedenken hätte
es einzusetzen.
Aber nicht weils vielleicht nicht funktioniert, aber dieser Versionsdurcheinander ist
schon extrem.
Vor allem weil man Hellseher sein muss um herauszufinden mit was man arbeitet.

Grüsse
Rainer
Für alle DP'ler einen guten Rutsch

DeddyH 31. Dez 2007 14:32

Re: Probleme mit mysql und zquery (zeoslib)
 
Ich würde Dir auch eher zu Firebird raten.

Bernhard Geyer 31. Dez 2007 15:05

Re: Probleme mit mysql und zquery (zeoslib)
 
Zitat:

Zitat von WS1976
Aber nicht weils vielleicht nicht funktioniert, aber dieser Versionsdurcheinander ist
schon extrem.

Wieso? Es gibt eine 6er-Version als Alpha, 5.1er als Beta/RC, 5.0 als aktiven Zweig und dann Altversionen.

Ungünstiger ist das der Support/Bereitstellung von vorkompilierten Versionen fast zum erliegen gekommen ist. Bis vor kurzen wurden wenigsten Builds bereitgestellt wenn Sicherheitlücken gefixt wurden.

Aber man will ja verstärkt unser bestes - unser Geld. Viele SW-Entwickler werden gar nicht wissen das sie ein kostenpflichtige Lizenz kaufen müssen sobald sie z.B. die libmysql.dll mit ihren Programm verteilen und ihr Programm nicht als Sourcecode zur verfügung gestellt wird.

mkinzler 31. Dez 2007 15:25

Re: Probleme mit mysql und zquery (zeoslib)
 
Deshalb auch DeddyH's Rat zu FireBird.

WS1976 31. Dez 2007 17:39

Re: Probleme mit mysql und zquery (zeoslib)
 
Hallo,

Zitat:

Wieso? Es gibt eine 6er-Version als Alpha, 5.1er als Beta/RC, 5.0 als aktiven Zweig und dann Altversionen.
da kann ich aber nur lachen. Zu jeder dieser Versionen kannst du mindestens 10 Zwischenversionen downloaden und bei keiner steht dabei ob es sich um alfa beta oder sonstwas ist.
Ausserdem sind diese noch über den normalen und den Entwicklerbereich verstreut.
Du warst wohl lange nich mehr auf dieser Website?

Aber lassen wir das wir müssen uns ja im auslaufenden nicht noch streiten.
Ich habe mir meine Meinung gebildet.

Grüsse
Rainer

DeddyH 31. Dez 2007 17:48

Re: Probleme mit mysql und zquery (zeoslib)
 
Ich weiß ehrlich gesagt nicht, was alle an MySQL so doll finden. Wenn es nicht bei vielen Webspaces dabei wäre, wäre es IMO vollkommen uninteressant. Ich kann mich nur wiederholen: lieber Firebird nehmen, das ist wirklich kostenfrei und ausgereift.


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