Delphi-PRAXiS
Seite 3 von 4     123 4      

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)

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:23 Uhr.
Seite 3 von 4     123 4      

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