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 XE2 et SQLQuery


Sujet :

Bases de données Delphi

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2004
    Messages : 11
    Par défaut Delphi XE2 et SQLQuery
    Bonjour,

    j'aimerai afficher le résultat d'une requête (placée dans un combobox) dans un DBGrid.

    J'ai un TSQLQuery + TDataSetProvider + TClientDataSet + TDataSource et un DBgrid. La requête est sélectionnée dans un combobox et j'aimerai placer le résultat dans un DBGrid.

    Merci de votre aide.

    Nancy

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Il te faut faire un Open sur le TSQLQuery puis un Open sur le TClientDataSet

    Le TSimpleDataSet regroupe en un seul composant le trio infernal TSQLQuery + TDataSetProvider + TClientDataSet

    Ensuite pour le ComboBox, c'est flou !
    Est-ce un ComboBox dans la TDBGrid, utilise pour cela Column.PickList
    Sinon, explique-toi mieux !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2004
    Messages : 11
    Par défaut
    Merci de votre aide. Je n'arrive toujours pas à utiliser le SQLQuery pour faire des requêtes paramétrées. Au sujet du combobox, je veux que la requête soit choisie dans une liste et que le texte SQL soit exécuter par SQLQuery.

    J'ai trouvée une solution qui détourne le problème, mais qui ne me satisfait pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if Combobox2.itemindex=0 then
      begin
      Fiche_login.SQLConnection.Connected := true;
      SQLDataSet_requetes.Active :=false;
      SQLDataSet_requetes.CommandType := ctQuery;
      SQLDataSet_requetes.CommandText := 'select * from mecaniciens';
      SQLDataSet_requetes.Active :=true;
      ClientDataSet_requetes.Close;
      ClientDataSet_requetes.Open;
      DbNavigator1.DataSource.DataSet.Refresh;
      DbNavigator1.Enabled :=true;
          end;
    Je continue de travailler sur le sujet.

    Merci,
    Nancy

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Une requête paramétrée dont les paramètres changent sur tu as plusieurs SQL différents dans ton ComboBox
    Je n'avais pas compris que le ComboBox était la source

    Je me suis fait un petit outil pour utiliser ODAC ou ADO sur Oracle et comparé les comportements
    Justement comme sous TOAD, j'ai fait un écran rapide (et moche) pour remplir les paramètres, voici le code, je te laisse l'étudier
    concentre toi sur ParamCount et Params[I]


    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    //------------------------------------------------------------------------------
    procedure TSLTBrowserOracleQueryForm.ExecuteQuery(const ASQLText: string; OpenMode: Boolean);
    var
      Params: ISLTDBQueryParameterizable;
      I: Integer;
      Prompts: array of string;
      Values: array of string;
      Value: string;
    begin
      if not Assigned(FQuery) then
      begin
        FQuery := TSLTDBQuery.Create(GetConnection());
        if OpenMode then
          DataSourceFromOpenQuery.DataSet := FQuery.DataSet
        else
          DataSourceFromOpenQuery.DataSet := nil;
      end
      else
        FQuery.Close();
     
      with FQuery do
      begin
        SQLText := ASQLText;
     
        if Supports(FQuery, ISLTDBQueryParameterizable, Params) then
        with Params do
        begin
          if ParamCount > 0 then
          begin
            SetLength(Prompts, ParamCount * 3);
            SetLength(Values, ParamCount * 3);
            for I := 0 to ParamCount - 1 do
            begin
              Prompts[I * 3] := 'Valeur de ' + Params[I].Name;
              Prompts[I * 3 + 1] := 'Type de données de ' + Params[I].Name;
              Prompts[I * 3 + 2] := 'Type de paramètres de ' + Params[I].Name;
              Values[I * 3 + 1] := TSTLTypInfoRTTIWrapper.EnumToString(TypeInfo(TFieldType), Ord(ftWideString));
              Values[I * 3 + 2] := TSTLTypInfoRTTIWrapper.EnumToString(TypeInfo(TParamType), Ord(ptInput));
            end;
            if InputQuery('Paramètres', Prompts, Values) then
            begin
              for I := 0 to ParamCount - 1 do
              begin
                Params[I].Value := Values[I * 3];
                Params[I].DataType := TFieldType(TSTLTypInfoRTTIWrapper.StringToEnum(TypeInfo(TFieldType), Values[I * 3 + 1]));
                Params[I].ParamType := TParamType(TSTLTypInfoRTTIWrapper.StringToEnum(TypeInfo(TParamType), Values[I * 3 + 2]));
              end;
            end;
          end;
        end;
     
        if OpenMode then
          Open()
        else
          ExecSQL();
     
        if Supports(FQuery, ISLTDBQueryParameterizable, Params) then
        with Params do
        begin
          if ParamCount > 0 then
          begin
            Value := '';
            for I := 0 to ParamCount - 1 do
              if Params[I].ParamType in [ptOutput, ptInputOutput] then
                Value := Value + VarToStr(Params[I].Value) + sLineBreak;
     
            ShowMessage(Value);
          end;
        end;
      end;
    end;
    TSLTDBQuery est une indirection que tu peux assimiler à un TSQLQuery (en réalité selon l'engine cela utilise TOraQuery, TSQLQuery, TADOQuery pour Oracle ou TMyQuery et ... pour MySQL)
    ISLTDBQueryParameterizable, tu peux l'oublier, fait comme si cela était implicite !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Firemonkey (Delphi XE2) Application.ExeName
    Par Pocus dans le forum Composants FMX
    Réponses: 4
    Dernier message: 26/04/2019, 16h30
  2. Firemonkey (Delphi XE2) exemple basique ne tournant pas
    Par Pocus dans le forum Composants FMX
    Réponses: 7
    Dernier message: 13/09/2011, 09h48
  3. Résumé des Nouveautés Delphi XE2 tour Paris 8 Sept
    Par John Colibri dans le forum EDI
    Réponses: 2
    Dernier message: 11/09/2011, 10h58
  4. Prise en main delphi XE2
    Par SISKODS9 dans le forum EDI
    Réponses: 6
    Dernier message: 10/09/2011, 15h35
  5. Première présentation de Delphi XE2
    Par John Colibri dans le forum EDI
    Réponses: 53
    Dernier message: 04/09/2011, 11h28

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