Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi select anweisung (https://www.delphipraxis.net/172602-select-anweisung.html)

Volker Z. 15. Jan 2013 17:52

AW: select anweisung
 
Hallo,

Zitat:

ich habe alles gemacht. Ich bekomme immer wieder das gleiche Fehler;
Welchen Fehler? DCU not found oder Field not found?

Gruß

sx2008 15. Jan 2013 18:17

AW: select anweisung
 
Zitat:

Zitat von gro (Beitrag 1199141)
versuchs mal so:
Delphi-Quellcode:
ADOQuery1.SQL.Text := 'SELECT user, sum(poso) as sum FROM history group by user';

Nein!!
"User" ist ein reserviertes Wort -> sollte nicht als Feldname verwendet werden, einfach ändern
sum(poso) as sum -> das geht auch nicht; sum ist eine SQL-Funktion, die man ebenfalls nicht als Feld- oder Aliasname verwenden sollte.

Selbst wenn die Datenbank die Abfrage akzeptieren sollte.
Leute geht auf Nummer Sicher; keine reservierten Bezeichner verwenden!!!

Hier noch ein kleines Negativbeispiel:
SQL-Code:
SELECT "by.select" AS as, SUM("by.from") AS max FROM "group" by GROUP BY "by.select"

stathis 16. Jan 2013 09:11

AW: select anweisung
 
Zitat:

Zitat von Volker Z. (Beitrag 1199189)
Hallo,

Zitat:

ich habe alles gemacht. Ich bekomme immer wieder das gleiche Fehler;
Welchen Fehler? DCU not found oder Field not found?

Gruß

field not found!!!

Ist es Kommisc

Ist es Komisch oder_

Select user from …. Geht

Select Poso from … geht
Select user,poso from …. Field user ok - Field 'poso' not found
Select poso, user … field poso ok - field 'user' not found
Also immer das 2. field

Ich habe auch alle andere probiert statt user -> user_, abcuser ...

Kann sein das ich irgendwo in der Installation Fehler gemacht habe?
Seit 2 Monate Kämpfe ich mit dieses Fehler.

Ich danke Sehr

Stathis

stathis 16. Jan 2013 09:14

AW: select anweisung
 
Zitat:

Zitat von sx2008 (Beitrag 1199192)
Zitat:

Zitat von gro (Beitrag 1199141)
versuchs mal so:
Delphi-Quellcode:
ADOQuery1.SQL.Text := 'SELECT user, sum(poso) as sum FROM history group by user';

Nein!!
"User" ist ein reserviertes Wort -> sollte nicht als Feldname verwendet werden, einfach ändern
sum(poso) as sum -> das geht auch nicht; sum ist eine SQL-Funktion, die man ebenfalls nicht als Feld- oder Aliasname verwenden sollte.

Selbst wenn die Datenbank die Abfrage akzeptieren sollte.
Leute geht auf Nummer Sicher; keine reservierten Bezeichner verwenden!!!

Hier noch ein kleines Negativbeispiel:
SQL-Code:
SELECT "by.select" AS as, SUM("by.from") AS max FROM "group" by GROUP BY "by.select"

mit ADO habe ich nict versucht. Koenne nicht aus.

koennen sie ein gutes Tutorial mit ADO und Mysql?

Jumpy 16. Jan 2013 10:02

AW: select anweisung
 
Hatte vor kurzem ein ähnliches Problem mit einem Feld das Start hieß. Datenbank war Oracle. Geklappt hat es dann mit:
SQL-Code:
'Select "Start" as Anfang From Tabellenname'
Vielleicht bietet deine DB eine Vergleichbare Möglichkeit? In Access z.B. würde man dann [Start] nehmen.

Volker Z. 16. Jan 2013 13:14

AW: select anweisung
 
Hallo,

wenn ich alles richtig verstanden habe, dann nutzt Du MySQL Version 5.1 oder höher und die dbxopenmysql Units. Zwischen MySQL 5.0 und 5.1 (bei späteren Versionen weiß ich es nicht) gibt es eine kleine Änderung in den Datentypen. Schau Dir mal die Definition von MYSQL_FIELD und MYSQL_RES in der Unit PlainMysql50 an. Stimmen diese mit der Dokumentation Deiner MySQL Version überein? Ich habe für MySQL 5.1 folgende Anpassungen gemacht:
Delphi-Quellcode:
  MYSQL_FIELD = packed record
    name:            PChar;
    org_name:        PChar;
    table:           PChar;
    org_table:       PChar;
    db:              PChar;
    catalog:         PChar;
    def:             PChar;
    length:          LongInt;
    max_length:      LongInt;
    name_length:     Cardinal;
    org_name_length: Cardinal;
    table_length:    Cardinal;
    org_table_length: Cardinal;
    db_length:       Cardinal;
    catalog_length:  Cardinal;
    def_length:      Cardinal;
    flags:           Cardinal;
    decimals:        Cardinal;
    charsetnr:       Cardinal;
    _type:           Cardinal;
    extention:       Pointer; // <-- Gab es in Version 5.0 noch nicht
  end;

  MYSQL_RES = packed record
    row_count:      Int64;
    fields:         PMYSQL_FIELD;
    data:           PMYSQL_DATA;
    data_cursor:    PMYSQL_ROWS;
    lengths:        PLongInt;
    handle:         PMYSQL;
    field_alloc:    MEM_ROOT;
    field_count:    Integer;
    current_field:  Integer;
    row:            PMYSQL_ROW;
    current_row:    PMYSQL_ROW;
    eof:            Byte;
    unbuffered_fetch_cancelled: Byte;
    methods:        PMYSQL_METHODS;
    extention:       Pointer; // <-- Gab es in Version 5.0 noch nicht
  end;
Anschließend das Projekt neu erzeugt (Umsch+F9). Seither funktioniert es mit 5.1 (höhere Versionen habe ich noch nicht getestet).

Gruß

stathis 16. Jan 2013 21:41

AW: select anweisung
 
Zitat:

Zitat von Volker Z. (Beitrag 1199263)
Hallo,

wenn ich alles richtig verstanden habe, dann nutzt Du MySQL Version 5.1 oder höher und die dbxopenmysql Units. Zwischen MySQL 5.0 und 5.1 (bei späteren Versionen weiß ich es nicht) gibt es eine kleine Änderung in den Datentypen. Schau Dir mal die Definition von MYSQL_FIELD und MYSQL_RES in der Unit PlainMysql50 an. Stimmen diese mit der Dokumentation Deiner MySQL Version überein? Ich habe für MySQL 5.1 folgende Anpassungen gemacht:
Delphi-Quellcode:
  MYSQL_FIELD = packed record
    name:            PChar;
    org_name:        PChar;
    table:           PChar;
    org_table:       PChar;
    db:              PChar;
    catalog:         PChar;
    def:             PChar;
    length:          LongInt;
    max_length:      LongInt;
    name_length:     Cardinal;
    org_name_length: Cardinal;
    table_length:    Cardinal;
    org_table_length: Cardinal;
    db_length:       Cardinal;
    catalog_length:  Cardinal;
    def_length:      Cardinal;
    flags:           Cardinal;
    decimals:        Cardinal;
    charsetnr:       Cardinal;
    _type:           Cardinal;
    extention:       Pointer; // <-- Gab es in Version 5.0 noch nicht
  end;

  MYSQL_RES = packed record
    row_count:      Int64;
    fields:         PMYSQL_FIELD;
    data:           PMYSQL_DATA;
    data_cursor:    PMYSQL_ROWS;
    lengths:        PLongInt;
    handle:         PMYSQL;
    field_alloc:    MEM_ROOT;
    field_count:    Integer;
    current_field:  Integer;
    row:            PMYSQL_ROW;
    current_row:    PMYSQL_ROW;
    eof:            Byte;
    unbuffered_fetch_cancelled: Byte;
    methods:        PMYSQL_METHODS;
    extention:       Pointer; // <-- Gab es in Version 5.0 noch nicht
  end;
Anschließend das Projekt neu erzeugt (Umsch+F9). Seither funktioniert es mit 5.1 (höhere Versionen habe ich noch nicht getestet).

Gruß

:thumb: Das wars Dankeeeeeeeeeeeeeeeeeeeeeeeeeeee :lol::lol::lol:

Volker Z. 16. Jan 2013 21:47

AW: select anweisung
 
Hallo,

gerne :-D

Gruß

stathis 23. Nov 2013 21:34

AW: select anweisung
 
hallo wieder,
die firma, wo ich meine homepage habe, hat eine update zu mysql 5.5. gemacht, und mein programm funktioniert nicht mehr.
Koennst du vieleicht was fuer aenderungen machen muss?
ich danke dir
Stathis

Perlsau 23. Nov 2013 22:52

AW: select anweisung
 
Mit Sicherheit wäre es äußerst hilfreich, statt "programm funktioniert nicht mehr" zu beschreiben, welche Fehler auftreten, am besten mit aussagekräftigem Fehlertext.

Des weiteren könntest du dir die Änderungen, die von der vorherigen zur jetzigen Version gemacht wurden, direkt auf der MySQL-Homepage anschauen.

In English:

It would be helpful du tell the whole error message instead of saying "program is not working any more".

Further you could try to find out changes from previous version to current version by visiting MySQL Homepage.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:30 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz