IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

[0.9.29/fpc 2.4.1] Opérations avec le composant ODBC [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 70
    Points : 77
    Points
    77
    Par défaut [0.9.29/fpc 2.4.1] Opérations avec le composant ODBC
    Salut tout le monde,

    Ma question est d'une simplicité déconcertante, cependant je n'ai toujours pas de solution , la voici donc :

    Est-ce que quelqu'un sait comment utiliser les fonctions GetTableNames et GetFieldNames du composant TOdbc ???

    Personnellement j'ai à chaque fois une erreur du type
    Project xxx raised exception class 'External : SIGSEGV'.
    Je suis bien connecté à la base via le composant ODBC, j'arrive à faire des requêtes, à récupérer les informations etc..., mais pas moyen d'utiliser ces fonctions. Ceci est bien dommage car c'est tout de même plus pratique que d'aller bidouiller dans les tables systèmes de la base pour trouver l'info.

    D'avance merci pour vos infos.

    @+

    Ci joint le programme de test... Pour info, je mettais les fichiers DSN dans le répertoire ODBC. J'ai effectuer le test sur une base Sybase, MySQL et DB2. Pas moyen de récupérer les champs ou les tables via les fonctions prévues à cet effet.

  2. #2
    Membre expérimenté
    Avatar de chris37
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juillet 2007
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 378
    Points : 1 688
    Points
    1 688
    Par défaut
    Décidément ,

    La réponse est dans la classe TODBCConnection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function TODBCConnection.GetSchemaInfoSQL(SchemaType: TSchemaType;  SchemaObjectName, SchemaObjectPattern: string): string;
    begin
      Result:=inherited GetSchemaInfoSQL(SchemaType, SchemaObjectName,  SchemaObjectPattern);
      // TODO: implement this
    end;
    Voila, cela veux dire que cela ne fonctionnera pas en ODBC

    Pour mysql, cela fonctionne bien avec le composant natif de Lazarus car la fonction de gestion du schema est implémentée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function TConnectionName.GetSchemaInfoSQL(SchemaType: TSchemaType;
      SchemaObjectName, SchemaPattern: string): string;
     
    begin
      case SchemaType of
        stTables     : result := 'show tables';
        stColumns    : result := 'show columns from ' + EscapeString(SchemaObjectName);
      else
        DatabaseError(SMetadataUnavailable)
      end; {case}
    end;
    La solution dans votre cas est de faire votre propre fonction avec les commandes SQL appropriées et cela fonctionnera même en passant par ODBC

    Bon courage

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 70
    Points : 77
    Points
    77
    Par défaut Hélas....
    Salut Chris37,

    Merci pour la réponse, je dois dire que je la connaissais déjà, ou du moins je m'en doutais. Cependant j'avais reporté ce bug au niveau du bug tracker de Free Pascal, bug qui a été clos et marqué comme résolu, donc j'espérais....

    Enfin tant pis, je vais continuer à taper dans les tables systèmes des bases de données, ou voir pour basculer sur QT, peut être que cela fonctionnera mieux...

    @+

  4. #4
    Membre expérimenté
    Avatar de chris37
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juillet 2007
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 378
    Points : 1 688
    Points
    1 688
    Par défaut
    Alcatiz est en train de récupérer l'ensemble de mon wiki Lazarus donc si certain d'entre vous veulent l'aider, ce serait cool pour lui....car il m'a vraiment aider a découvrir la grande et belle famille de DVP ! Merci à lui

    Hum ! no comment sur QT mais je viens d'intégrer l'équipe de DVP de cette section


    Donc à bientôt

    PS : Jean-Luc ! ne sorts pas ton fusil stp je ne change pas de camp mais juste de palier dans l'immeuble

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Points : 163
    Points
    163
    Par défaut
    Citation Envoyé par chris37 Voir le message
    Décidément ,

    La réponse est dans la classe TODBCConnection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function TODBCConnection.GetSchemaInfoSQL(SchemaType: TSchemaType;  SchemaObjectName, SchemaObjectPattern: string): string;
    begin
      Result:=inherited GetSchemaInfoSQL(SchemaType, SchemaObjectName,  SchemaObjectPattern);
      // TODO: implement this
    end;
    Voila, cela veux dire que cela ne fonctionnera pas en ODBC
    Bonjour,

    pourtant dans la version 2.4.0 on a pas ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function TODBCConnection.GetSchemaInfoSQL(SchemaType: TSchemaType; SchemaObjectName, SchemaObjectPattern: string): string;
    begin
      if SchemaObjectName<>'' then
        Result := SchemaObjectName
      else
        Result := ' ';
      if not (SchemaType in [stNoSchema, stTables, stColumns, stProcedures]) then
        DatabaseError(SMetadataUnavailable);
    end;
    mais ce n'est peut-être pas suffisant.

  6. #6
    Membre expérimenté
    Avatar de chris37
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juillet 2007
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 378
    Points : 1 688
    Points
    1 688
    Par défaut
    Bonsoir Thierry,

    Effectivement dans cette version, les choses ont l'air de bouger mais c'est dans les appels plus profond que ca ce complique apparemment car il manque deux notions essentielles

    N'oublions pas que c'est le dsn qui connait le type de base de données et non Lazarus lors de l'utilisation d' ODBC

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WSDL]opérations avec meme types de parametres
    Par lion13 dans le forum Websphere
    Réponses: 1
    Dernier message: 22/11/2007, 10h07
  2. [WSDL] Opérations avec meme types de paramatres
    Par lion13 dans le forum Weblogic
    Réponses: 0
    Dernier message: 22/11/2007, 10h05
  3. Opérations avec Jours Fériés
    Par XGotX dans le forum Langage SQL
    Réponses: 8
    Dernier message: 07/08/2007, 11h52
  4. Réponses: 1
    Dernier message: 07/05/2007, 20h12
  5. Opérations avec Chiffres > à 10 milliards
    Par aristeas dans le forum Langage
    Réponses: 7
    Dernier message: 24/01/2007, 18h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo