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

Bases de données Delphi Discussion :

[DELPHI][ORACLE] Requête qui renvoie un peu ce qu'elle veut


Sujet :

Bases de données Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 57
    Points : 31
    Points
    31
    Par défaut [DELPHI][ORACLE] Requête qui renvoie un peu ce qu'elle veut
    Bonjour (enfin re...)
    Bon, avant tout, une petite question sur le forum: Est ce que c'est normal qu'il me demande de m'identifier a chaque clic que je fait? J'accepte pourtant les cookies...

    Bref. voici mon soucis:
    Je suis sur une application developpée en DELPHI (dont je ne connais pas grand chose, je parle du langage) et qui tapait sur une base de données Oracle.
    Bon, le monsieur qui a fait l'appli est partit en retraite et, pour courronner le tout, en mauvais termes avec ma chef... resultat, on a AUCUN soutiens sur ce projet.
    Bon,c a serait parfait s'ils n'avaient decidé de changer de base de données et donc aussi de tables.
    Disons qu'avant je tapait sur la table X et maintenant, j'ai une table Y qui n'attends que mes petites requetes bien dodues pour s'amuser...
    J'ai le code source de l'appli sur mon poste et j'ai donc mis dans mon TNSNAMES le truc qui dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    X.WORLD =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = a.b.c)(PORT = z))
        (CONNECT_DATA = (SID = ha1))
      )
    Ce qui est en gras est rajouté pour moi par soucis de confidentialité et parce que sinon, je devrais tous vous tuer le soir dans votre sommeil!..

    Bon, revenons au pb...
    Le premier truc qui cloche, c'est que quand j'execute le code source tel quel (sans modifier la base de données sur laquel il tape, sachant qu'elle existe encore), ben il me sors une erreur SQL. Bon, on s'en fout du numero parce que je m'en souviens plus mais en gros, si je compile, que je met l'EXE sur le serveur, ben ca marche... Je pense que mon TNSNAMES n'est pas bien renseigné (ca, j'en doute) ou bien jai plusieurs TNSNAMES et j'ai pas renseigné le bon ou bien encore il doit y avoir un executable oracle qui doit tourner sur la machine et c'est pas le cas (elle a été réinstallée récemment)???
    Je bite pas un mot de tout ces trucs oracliens...

    Bref, si vous avez une idée (pas trop technique svp), elle sera bienvenue mais j'ai réussi a contourner cet etat de fait.

    L'autre probleme, un peu plus chiant, celui la, c'est que quand je lance le programme compilé pour qu'il tape sur la nouvelle base avec les champs qui vont bien (et qui été testé avec SQL plus et qui me retourne exactement ce que je veux), ben il ne me retourne pas toutes les données...
    S'il me retournait TOUT correctement, je serais content;
    S'il me retournait RIEN, je me dirais que je suis une quiche
    Mais là, disons qu'il me retourne les numeros de matricule des agent (non je ne fait pas parti des services secrets, juste de la ratp et c'est pas ce que j'ai fait de mieux visiblement...)mais pas leurs noms!!!
    J'ai meme essayé la requete toute conne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select s.nom from tata s
    et il me retourne rien!!! Alors là, je seche (bien que je ne fût pas mouillé, c'est un comble) et j'approche dangereusement de la date limite tel le coyote se dirige dangereusement vers le fond du canyon... (ouahhhh la culture générale!!!!).

    Bon, desolé de ce long post mais je me sens moins seul de vous ecrire et pis j'essaye de prendre le rythme de boulot de la Régie et c'est pas evident!

    A tres vite j'espere!

    Darkangel

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par LAPLACE Voir le message
    Bon, avant tout, une petite question sur le forum: Est ce que c'est normal qu'il me demande de m'identifier a chaque clic que je fait? J'accepte pourtant les cookies...
    Il faudrait poster cette question dans le forum approprié, la c'est delphi



    Citation Envoyé par LAPLACE Voir le message
    Je suis sur une application developpée en DELPHI (dont je ne connais pas grand chose, je parle du langage) et qui tapait sur une base de données Oracle.
    Ca va être dur la, si tu ne connais pas le langage

    Citation Envoyé par LAPLACE Voir le message
    Bon,c a serait parfait s'ils n'avaient decidé de changer de base de données et donc aussi de tables.
    S'ils n'ont pas changé le nom des tables, il y a juste un paramètre à modifier (voir aucun si la liaison se fait par ODBC, car c'est cette dernière qu'il faudrait modifier)

    Citation Envoyé par LAPLACE Voir le message
    Disons qu'avant je tapait sur la table X et maintenant, j'ai une table Y qui n'attends que mes petites requetes bien dodues pour s'amuser...
    J'ai le code source de l'appli sur mon poste et j'ai donc mis dans mon TNSNAMES le truc qui dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    X.WORLD =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = a.b.c)(PORT = z))
        (CONNECT_DATA = (SID = ha1))
      )
    Ce qui est en gras est rajouté pour moi par soucis de confidentialité et parce que sinon, je devrais tous vous tuer le soir dans votre sommeil!..
    La pour nous c'est du chinois, ne connaissant pas l'application et comment elle a été programmé on va pas pouvoir faire grand chose.

    Citation Envoyé par LAPLACE Voir le message
    Le premier truc qui cloche, c'est que quand j'execute le code source tel quel (sans modifier la base de données sur laquel il tape, sachant qu'elle existe encore), ben il me sors une erreur SQL. Bon, on s'en fout du numero parce que je m'en souviens plus mais en gros, si je compile, que je met l'EXE sur le serveur, ben ca marche... Je pense que mon TNSNAMES n'est pas bien renseigné (ca, j'en doute) ou bien jai plusieurs TNSNAMES et j'ai pas renseigné le bon ou bien encore il doit y avoir un executable oracle qui doit tourner sur la machine et c'est pas le cas (elle a été réinstallée récemment)???
    Justement si, le numéro d'erreur et sont intitulé sont important, ca donne souvent des pistes pour indiquer d'où vient l'erreur.

    Citation Envoyé par LAPLACE Voir le message
    Bref, si vous avez une idée (pas trop technique svp), elle sera bienvenue mais j'ai réussi a contourner cet etat de fait.
    Pas trop technique cela va être dur.

    Citation Envoyé par LAPLACE Voir le message
    L'autre probleme, un peu plus chiant, celui la, c'est que quand je lance le programme compilé pour qu'il tape sur la nouvelle base avec les champs qui vont bien (et qui été testé avec SQL plus et qui me retourne exactement ce que je veux), ben il ne me retourne pas toutes les données...
    S'il me retournait TOUT correctement, je serais content;
    S'il me retournait RIEN, je me dirais que je suis une quiche
    Mais là, disons qu'il me retourne les numeros de matricule des agent (non je ne fait pas parti des services secrets, juste de la ratp et c'est pas ce que j'ai fait de mieux visiblement...)mais pas leurs noms!!!
    J'ai meme essayé la requete toute conne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select s.nom from tata s
    et il me retourne rien!!! Alors là, je seche (bien que je ne fût pas mouillé, c'est un comble) et j'approche dangereusement de la date limite tel le coyote se dirige dangereusement vers le fond du canyon... (ouahhhh la culture générale!!!!).
    Autant les problème découle de ce qu'il y a plus haut donc on verra cela plus tard.

    Chose importante, il faut que l'on connaisse le moyen de connexion entre le programme delphi et la base de données :
    • La version de delphi ?
    • Composant BDE, ADO, DBExpress ou composants tiers ?
    • Liaison direct ou par le biais d'un drivers ODBC ?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Salut!
    Merci pour ta réponse!

    alors, le code d'erreur oracle est le suivant:
    ORA-01041
    Et il l'affiche dès que je lance la ligne:
    sachant que Mydb à les bons parametres puisque le meme code s'execute sans aucune modif sur le serveur...

    Mais comme je l'ai dit, c'est pas l'erreur la plus importante.
    Mon vrai probleme vient du fait que ma requete me renvoie que la moitié des informations (par exemple la colonne matricule est entierement remplie alors que la colonne NOM de la meme table est vie alors qu'avec SQL Plus, j'ai toutes les infos...).
    Ma version de Delphi est la 6, j'utilise pour me connecter à la base le composant BDE:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    dbhb0: TDatabase;
    Query1: TQuery;
     
    Query1.DatabaseName := dbhb0.DatabaseName;
    Query1.SQL.Clear;
     
    Query1.SQL.Add('select s.nom s.mat from s_etat_civil s' );
    Query1.open;
    datasetToTextFile(Query1, '.\TIndi.csv');
    et là, j'ai un beau fichier CSV qui contient les numeros de matricule mais pas les noms... ET POURTANT ILS Y SONT!!!
    Non mais je vais me jeter par le fenetre de ma tour, ca va peut etre resoudre le pb... J'en ai marre des erreurs qui sortent de l'espace! :p
    Merci pour vos lumieres, l'obscurité de ma vie professionnelle vous en remercie!

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Il manque une [,] dans ta requete.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Query1.SQL.Add('select s.nom, s.mat from s_etat_civil s' );
    Pour l'erreur ORA, il se peut qu'il manque le drivers ODBC de connexion vers la base de données ORACLE (Enfin c'est ce que j'ai compris en utilisant google et ton code d'erreur)

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Bon, re!
    Pour la virgule, elle ne manque pas dans mon code, c'est juste en recopiant la ligne que je m'a gourré!
    Bon, sinon, j'ai pris une autre voie pour corriger mon manque de noms dans la requete resultat...

    voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ADOConnection1.Open;
    ADOQuery1.SQL.Add('select 0,0,s.nom, s.mat from s_etat_civil s' );
    ADOQuery1.Open;
    datasetToTextFile(ADOQuery1, '.\TIndi.csv');
    Bon, là ca marche du tacotac et j'ai bien tous mes champs de remplis.
    Par contre, j'ai besoin de metter tous ces resultats dans une fichier paradox (TIndi.db). avant, BatchMove me faisait ca mais là, il refuse de prendre une TADOQuery mais il veut une TQuery (BDE)...
    Si quelqu'un sait comment transferer, je suis preneur!

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par LAPLACE Voir le message
    Bon, re!
    Pour la virgule, elle ne manque pas dans mon code, c'est juste en recopiant la ligne que je m'a gourré!
    Bon, sinon, j'ai pris une autre voie pour corriger mon manque de noms dans la requete resultat...

    voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ADOConnection1.Open;
    ADOQuery1.SQL.Add('select 0,0,s.nom, s.mat from s_etat_civil s' );
    ADOQuery1.Open;
    datasetToTextFile(ADOQuery1, '.\TIndi.csv');
    Bon, là ca marche du tacotac et j'ai bien tous mes champs de remplis.
    Par contre, j'ai besoin de metter tous ces resultats dans une fichier paradox (TIndi.db). avant, BatchMove me faisait ca mais là, il refuse de prendre une TADOQuery mais il veut une TQuery (BDE)...
    Si quelqu'un sait comment transferer, je suis preneur!
    C'est normal, le Batchmove ne fonctionne qu'avec les composants du BDE et pas avec les composants ADO.

    Sinon

    Il te faut ajouter l'unité ADOint

    et utiliser le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    procedure AdoQueryToCsv (AQuery : TAdoQuery;ColDelemiter,RowDelemiter,Filename : String);
    var
      lst : TStringList;
      i : integer;
      sTemp : String;
    begin
      With AQuery do
      begin
        lst := TStringList.Create;
        try
          First;  // obligatoire sinon la récupération des données ne se fera qu'a la position courante du curseur dans la base de données.
          lst.Text := Recordset.GetString(adClipString,RecordCount,ColDelemiter,RowDelemiter,'');
          //Ajout de la liste des champs
          for i := 0 to FieldCount -1 do
            sTemp := sTemp + Fields.Fields[i].FieldName + ColDelemiter;
          lst.Insert(0,Copy(sTemp,1,Length(sTemp) - Length(ColDelemiter));
          lst.SaveToFile(Filename);
        finally
          lst.Free;
        end;
      end;
    end;
    Utilisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AdoQueryToCsv(AdoQuery1,';',#13#10,'C:\test.csv');

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Ben en fait, j'arrive bien à mettre le resultat de ma requete ADO dans un fichier CSV. ca, ca marche.
    Mon probleme; c'est qu'avant, je pouvais utiliser BatchMove pour creer un fichier TINDI.DB (paradox) et que maintenant, je ne sais pas comment faire à partir d'ADO pour generer ce fichier sans BatchMove...

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Bon, je récapitule donc:

    J'ai besoin de transferer des données d'une base Oracle (sur plusieurs tables) vers un fichier *.db (paradox).

    Pour cela, j'ai deux solutions, chacune portant son probleme:

    1) soit j'utilise BDE mais dans ce cas là, j'ai des "trous" de données (j'ai aps les noms mais les matricules sont bons par exemple) et je peux, par contre, ters facilement creer mon fichier *.db directement à partir de ma requete via BatchMove

    2) Soit j'utilise ADO et là, ma requete me renvoie bien toutes les données, j'arrive a creer un fichier CSV à partir de cette requete (ca me sers pas a grand chose) mais je ne sais pas comment passer ces resultats dans un fichier *.db vu que batchMove ne marche pas avec ADO...

    Je seche completment. J'ai reussi à trouver une solution à mon premier pb (les données manquantes) mais je seche sur un nouveau pb!!!
    A l'aide! Je suis completement coincé là malgré toutes mes recherches...

  9. #9
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Essai cette requete (je ne suis pas sûr qu'elle fontionne avec Oracle)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ADOQuery1.SQL.Add('select 0,0,s.nom, s.mat into ''tindi.db'' in ''c:\'' from s_etat_civil s');

  10. #10
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Je viens de l'essayer mais ca marche pas. La requete ne s'execute pas (j'ai pas de message d'erreur parce que je suis obligé de lancer le programme directement sur le serveur).
    Mais y a pas une moulinette (meme en code) qui permette de transferer ce qu'il y a dans ma ADOQuery1 vers une table TTable?

  11. #11
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Bon, je suis en super galère là
    Est ce que quelqu'un peut me dire si c'est possible de faire un truc de ce genre:

    - J'ai mon ADOQuery1 qui est rempli avec ma requete.
    - Je créé un Tmy : TBDEDataset;
    - Je rempli mon Tmy avec les données qui sont dans mon ADOQuery1: (truc du genre)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    with ADOQuery1 do
          begin
            while not Eof do
            begin
              for i := 0 to FieldCount - 1 do
              begin
                [I]//Code qui me manque... (genre TMy := Fields.text)
              end;
    
              //Code qui me manque aussi genre TMy.append ou un truc comme ca
              Next;
            end;
          end;
    - Et enfin, je peux utiliser mon batchmove pour creer cette saloperie de fichier db.

    Est ce que quelqu'un peut me dire si c'est possible et, si oui, m'aider à combler les trous?
    Merci, ca me sauverai la vie!

  12. #12
    Membre averti
    Profil pro
    xxxxxxxxxxx
    Inscrit en
    Juin 2004
    Messages
    308
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : xxxxxxxxxxx

    Informations forums :
    Inscription : Juin 2004
    Messages : 308
    Points : 407
    Points
    407
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    var
      AField : TField;
      i : integer;
    begin
       while not ADOQuery1.Eof do
       begin
          TMy.Append;
          for i := 0 to ADOQuery1.FieldCount - 1 do
          begin
             AField := TMy.FieldByName(ADOQuery1.Fields[i].FieldName);
             if AField <> nil then 
               AField.Value := ADOQuery1.Fields[i].Value;
          end;
         TMy.Post;
         ADOQuery1.Next;
       end;
    end;
    Côté problème de connectivité Oracle, commencer par localiser et vérifier le TNSNAMES.ORA
    Tester l'accessibilité par la commande "TNSPING <alias>" (dans une console DOS)
    Ensuite pour le BDE, vérifier l'alias TNS fourni dans l'Administration BDE (panneau de config)
    Les "données incomplètes", ça pourrait être des données provenant d'une autre base / autre serveur...

    Enfin, éviter les gros mots ; ça ne fait pas avancer le schmilblick

  13. #13
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Bon, tout d'abord, merci de ta réponse. J'ai l'impression d'avoir au moins ecrit un peu de code!
    ensuite, desolé pour le gros mot, cela fait 1 semaine que je suis sur ce truc et je vois la dead line s'approcher et je suis en periode d'essai si tu voit ce que je veux dire!
    Alors desolé, je le referais plus!

    J'ai testé ton code mais visiblement, il plante à l'execution.
    Comme je ne peux pas l'executer sur mon poste, je n'ai aps de debugger. alors je met des jalons dans le code et je me suis appercu que l'erreur vient de la ligne
    Je me suis dit qu'apres avoir fait
    il faudrait peut etre faire un truc du genre
    mais ca plante aussi a cette nouvelle ligne et je n'ai pas le code de l'erreur...


    en ce qui concerne le manque de donnés retournées par la requete (si j'arrivais a résoudre ca, ca serait l'ideal), ben j'arrive à pinger ma base.
    Pour etre precis, je lance mon appli sur un serveur qui à son TNSNAMES défini pour que je puisse taper sur la base hb0_dev qui se trouve ailleurs.
    Mais quand je lance SQL+, j'ai bien toutes les données qui s'affiche. Et quand mon code utilise un composant ADO pour la requete, les noms s'affichent bien (ainsi que le reste des données). Il ne s'agit que lors de l'utilisation du composant BDE (qui, lui me permet super facilement grace à BatchMove de creer mon fichier DB) que je n'ai pas tous les resultats de ma requete. Je ne savais meme pas que c'etait possible alors de là a le corriger...
    en tout cas, merci de votre aide, ca me rassure un tout petit peu!

  14. #14
    Membre averti
    Profil pro
    xxxxxxxxxxx
    Inscrit en
    Juin 2004
    Messages
    308
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : xxxxxxxxxxx

    Informations forums :
    Inscription : Juin 2004
    Messages : 308
    Points : 407
    Points
    407
    Par défaut là je jette l'éponge
    Houlaaa
    Je partais du principe que vous aviez posé un composant TBDEDataset sur votre fiche ou datamodule, paramétré et tout et tout pour attaquer la table Paradox.
    Si ce n'est pas le cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TMy.Create(Self);  // est incorrect
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TMy := TBDEDataset.Create(Self); // est plus correct
    , mais les propriétés du dataset ne vont pas s'alimenter toutes seules !

  15. #15
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Salut!
    Bon, je suis desolé, je suis plus que débutant en delphi... disons que j'ai débuté das ce language il y a deux semaines... sur ce projet!

    Je vais essayer le code que tu m'a proposé dès lundi en essayant de correctement configurer le DataSet.

    Mais si quelqu'un pouvait me trouver une solution à un de ces deux probleme:

    - Lorsque je me connecte avec une connexion BDE, la requete ne me renvoie que la moitié du resultat (elleme renvoie bien toutes les lignes mais certaines colonnes restent vident malgré le fait qu'avec SQL Plus, j'obtiens tous les resultats correctement). Je n'arrive pas a savoir d'où ca peut venir vu que je suis aussi debutant en Oracle... A se demander pourquoi ils m'ont pris...

    - second probleme qui pourrait me permettre de passer outre le premier:
    Lorsque je fait ma requete avec ADO, j'ai bien tous les resultats qui me sont retournés (j'ai utilisé un bout de code du site developpez.com pour ecrire le resultat de la requete dans un fichier csv). Mais moi, ce qu'il me faut, ce sont des fichiers *.db en paradox. LoBDE, ca deviens facile de creer un fchier db mais à partir d'ADO, alors là, c'est la grande inconnue!
    Du coup, il me faudrait un moyen pour transformer un fichier CSV en fichier paradox. La, je me dis que ca doit etre possible, d'où mon idée de remplir un dataset BDE manuellement...

    Je sais que je suis relou avec mon probleme mais j'ai ENFIN réussi à intégrer une grosse société avec un minimum de sécurité et je vais me planter comme un nul juste parce que je bloque su ce petit soucis. Je suis en train de jouer mon avenir professionnel sur un probleme de base de données.
    Je m'excuse donc encore pour ce petit UP et je vous remercie de tout mon coeur pour votre aide et votre soutien.

  16. #16
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Bon, j'ai essayé la ligne que tu m'a mis et elle passe a l'execution.
    Par contre, le reste (la boucle qui rempli les champs) ne passe pas. ca me parrait normal vu que mon TMy n'a pas les colonnes requises...
    Comment je peux créer automatiquement les colonnes via ma table d'origine?

  17. #17
    Membre averti
    Profil pro
    xxxxxxxxxxx
    Inscrit en
    Juin 2004
    Messages
    308
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : xxxxxxxxxxx

    Informations forums :
    Inscription : Juin 2004
    Messages : 308
    Points : 407
    Points
    407
    Par défaut
    Ne serait-il pas plus simple de créer la structure table Paradox depuis le module base de données ?
    Ensuite faire pointer TMy sur la table DB via un alias BDE

  18. #18
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Je susi desolé, je suis surement une quiche mais j'ai pas compris ce que tu as écrit.
    Je suis vraiment débutant en Delphi, debutant mais volontaire! Je fait des recherches depuis pas mal de temps maintenant et je suis etonné de voir que je suis le premier à vouloir passer le resultat d'une requete ADO dans une fichier db grace à BatchMove...
    Si je pouvais utiliser batchMove, mon pb serait resolu... Mais il n'accepte que les objets speciaux et rien de ADO Ou alors j'ai vraiment rien compris!!!
    N'y a t il pas une fonction qui transforme le résultat d'une requete ADO en TTable?

  19. #19
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Bon, alors juste parce que je m'obstine (et que j'ai pas le choix!), j'essaye un truc.
    Je vais tenter de créér un TTable vide, lui creer les memes noms et types de colonnes que ma requete ADO et ensuite, le remplir avec cette dite requete.

    Mais, comme je suis toujours une quiche en delphi, je ne vois pas comment on créé les colonnes d'une TTable.

    J'ai fait pour le moment:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var
        TMy : TTable;
     
    ...
     
        TMy := TTable.Create(self);
     
        TMy.CreateTable;
    ensuite, je seche

  20. #20
    Membre averti
    Profil pro
    xxxxxxxxxxx
    Inscrit en
    Juin 2004
    Messages
    308
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : xxxxxxxxxxx

    Informations forums :
    Inscription : Juin 2004
    Messages : 308
    Points : 407
    Points
    407
    Par défaut
    Justement parce que tu es débutant, je t'oriente vers la façon la plus simple de créer la table, pour ensuite lancer ton programme Delphi.
    Donc
    1°) Créer une table Paradox :
    - Depuis le menu de Delphi, Outils/Module Base de données (ou Démarrer / Programmes / Borland Delphi x / Module Base de Données)
    - Depuis ce module menu Fichier / Nouveau / Table
    choisir le format de sortie
    - Déclarer la structure de la table (liste des champs)
    - Enregistrer
    2°) Renseigner les propriétés de TMy (tabletype, tablename)
    3°) Lancer le programme

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] requête qui renvoie un mauvais résultat
    Par Souri84 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 03/12/2010, 09h18
  2. Requête qui renvoie une liste de données
    Par fougna dans le forum Langage SQL
    Réponses: 5
    Dernier message: 02/08/2007, 12h05
  3. Requête qui renvoie les valeurs les plus souvent affichés
    Par athos7776 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 25/07/2007, 17h54
  4. Requête qui renvoie 'Null'
    Par Invit-é dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 11/06/2007, 17h32
  5. Problème requête qui renvoie plusieurs
    Par dai.kaioh dans le forum Langage SQL
    Réponses: 6
    Dernier message: 01/04/2004, 10h07

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