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 :

TriewView, not TriVieable


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 166
    Points : 96
    Points
    96
    Par défaut TriewView, not TriVieable
    Bonjour, je remplis un composant TTreeView en appelant une base de données composé de 7 niveaux.

    Voici le code d'appel:

    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
    TreeView1.Items.Clear;
    Datamodule1.QAfficheArboLoco.close;
    Datamodule1.QAfficheArboLoco.SQL.Clear;
    Datamodule1.QAfficheArboLoco.SQL.Add('SELECT ID_Engin_FK3,Module_N1,Module_N2,Module_N3,Module_N4,Module_N5,Module_N6');
    Datamodule1.QAfficheArboLoco.SQL.Add('FROM Arbo');
    Datamodule1.QAfficheArboLoco.SQL.Add('GROUP BY ID_Engin_FK3,Module_N1,Module_N2,Module_N3,Module_N4,Module_N5,Module_N6');
    Datamodule1.QAfficheArboLoco.Open;
    Datamodule1.QAfficheArboLoco.First;
    L_Acc_FieldCount:= Datamodule1.QAfficheArboLoco.FieldCount;
    While not Datamodule1.QAfficheArboLoco.Eof do
    begin
    if L_Acc_Value[0]<> Datamodule1.QAfficheArboLoco.Fields[0].Value then
    L_Acc_Treenode[0]:=TreeView1.Items.Add(nil,vartostr(Datamodule1.QAfficheArboLoco.Fields[0].Value));
    for i:=1 to Datamodule1.QAfficheArboLoco.FieldCount -1 do
    begin
    if (L_Acc_value[i]<> Datamodule1.QAfficheArboLoco.Fields[i].Value) or (Datamodule1.QAfficheArboLoco.Fields[i].Value = NULL) then
    L_Acc_Treenode[i]:=TreeView1.Items.AddChild(L_Acc_Treenode[i-1],Vartostr(Datamodule1.QAfficheArboLoco.Fields[i].Value));
    L_Acc_value[i]:=Datamodule1.QAfficheArboLoco.Fields[i].Value;
    end;
    L_Acc_value[0]:=Datamodule1.QAfficheArboLoco.Fields[0].Value;
    Datamodule1.QAfficheArboLoco.Next;
    end;
    DataModule1.QAfficheTypeOperationMP.close ;
    DataModule1.QAfficheTypeOperationMP.sql.clear;
    DataModule1.QAfficheTypeOperationMP.SQL.add('SELECT * FROM Description_Operation_Maintenance');
    DataModule1.QAfficheTypeOperationMP.open;
    while jx3<DataModule1.QAfficheTypeOperationMP.RecordCount do
    begin
    DOM_Combo.Items.Add(DataModule1.QAfficheTypeOperationMPDescr_Operation.value) ;
    jx3:=jx3+1;
    DataModule1.QAfficheTypeOperationMP.moveby(1);
    end;
    end;

    Bref cela n'a pas grand intérêt puisque cela marche.

    Le probleme se pose sur les modifications de cette arbo.
    J'arrive a le faire "brut" donc en direct! Mais les changements de ne s'effectuent pas réellement dans la table (donc inutile en gros!!!!)

    J'essaie de faire avec ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DataModule1.QMAJ.close ;
    DataModule1.QMAJ.sql.clear;
    SQL1:=('UPDATE ');
    SQL2:=(' SET ID_Engin = UPPER(ID_Engin),Module_N1 = UPPER(Module_N1),Module_N2 = UPPER(Module_N2),Module_N3 = UPPER(Module_N3),Module_N4 = UPPER(Module_N4),Module_N5 = UPPER(Module_N5),Module_N6 = UPPER(Module_N6)');
    SQL := concat(SQL1,ArboLocoDB,SQL2);
    DataModule1.QMAJ.ExecSQL;
    C'était censé modifier les colonnes tout d'un coup mais après je me suis rendu compte que ça ne fait que mettre les noms en capitales (lol ).

    Donc grâce à Malatar, j'essaie en faisant cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    WITH DataModule1.QModifPiece DO
    BEGIN
      SQL.Clear;
      SQL.Add('UPDATE Arbo SET Module_N1 =:Module_N1,Module_N2 =: UPPER(Module_N2),');
      SQL.Add('            Module_N3 =: Module_N3,Module_N4 =: Module_N4,');
      SQL.Add('            Module_N5 =: Module_N5,Module_N6 =: Module_N6');
      SQL.Add('WHERE ID_Engin=:ID_Engin');
      SQL.Add('AND '+ concatener + ' = ' + QuotedStr(SelectedModule)+'');
      ParamCheck := True;
    ExexSQL;
    Et il me sort une erreur , violation de champ

    Bref, je sens que ma requete est toute pourrie mais je desespere... lol

  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
    Et les paramètres tu les renseignes quand ???

    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
    WITH DataModule1.QModifPiece DO
    BEGIN
      SQL.Clear;
      SQL.Add('UPDATE Arbo SET Module_N1 =:Module_N1,Module_N2 =: UPPER(Module_N2),');
      SQL.Add('            Module_N3 =: Module_N3,Module_N4 =: Module_N4,');
      SQL.Add('            Module_N5 =: Module_N5,Module_N6 =: Module_N6');
      SQL.Add('WHERE ID_Engin=:ID_Engin');
      SQL.Add('AND '+ concatener + ' = ' + QuotedStr(SelectedModule)+'');
      ParamCheck := True;
      Params.ParamByName('Module_N1').Value := ?????
      Params.ParamByName('Module_N2').Value := ?????
      Params.ParamByName('Module_N3').Value := ?????
      Params.ParamByName('Module_N4').Value := ?????
     //  ... etc ...
      Params.ParamByName('ID_Engin').Value := ?????
    ExexSQL;
    Si tu ne les renseignes pas tu pourras jamais faire ton update
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 166
    Points : 96
    Points
    96
    Par défaut
    Je sais! enfin bon...

    Le probleme c'est que je ne sais pas comment dire quels modules sont modifiés! c'est ça le HIC!

    ou alors je dois faire une boucle en faisant une requete pour chaque niveau?

  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
    La requete comme elle est la, tu n'as pas le choix faut tous les renseigner.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

Discussions similaires

  1. Treeview or not Treeview
    Par Hyedene dans le forum IHM
    Réponses: 3
    Dernier message: 04/04/2003, 15h56
  2. TXMLModule.create - name = resource not found
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 04/03/2003, 10h54
  3. [Turbo C++] Fonciton containing for are not expanded inline
    Par BuG dans le forum Autres éditeurs
    Réponses: 6
    Dernier message: 17/02/2003, 06h48
  4. Component not found
    Par Pm dans le forum XMLRAD
    Réponses: 2
    Dernier message: 28/01/2003, 14h40
  5. "ALTERER" une col. NULL en NOT NULL - Int
    Par Gandalf24 dans le forum SQL
    Réponses: 2
    Dernier message: 28/12/2002, 00h07

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