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 :

DBLookupListBox


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 68
    Par défaut DBLookupListBox
    Salut,

    Dans une Form j'ai un DBEdit et une DBLookupListBox.
    Le DBEdit me permet d'ajouter dans une table T1.
    La DBLookupListBox est connectée à la table T1 et se contente d'afficher les informations.

    Je voudrais faire un test simple qui me permettrait d'afficher un message d'erreur si l'utilisateur ajoute un nom qui est déja dans la table.

    Quelqu'un pourrait il me dire comment faire ce test svp et si possible me donner le code merci

    J'ai essayer le code suivant mais sans résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if DBEdit.Text = DataModule.Table.FieldValues['ville']
           then  messagedlg('Cet enregistrement existe déja !',mtWarning, [mbOk],0)

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 6
    Par défaut
    salut

    tu peux essayer avec ca :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if DataModule.Table.locate('ville', DBEdit.Text, []) then
    // ton message d'erreur

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 68
    Par défaut
    J'ai essayé ton code mais ça ne marche pas.

    Dans ma table j'ai qu'un champ Ville et c'est ma clé primaire.
    Lorsque je valide l'ajout dans le programme, J'ai un message d'erreur 'Violation de clé'.

    En fait le test ne se fait pas donc delphi tente de l'ajouter et erreur de doublon.

    merci d'avoir répondu.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 6
    Par défaut
    sinon tu peux essayer avec l'evenement BeforePost de la table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm.TableBeforePost(DataSet: TDataSet);
    begin
      if Table.locate('ville', Dataset.Field('ville').AsString, []) then 
      raise exception.create('message d''erreur');
    end;
    V'la sinon tu peux essayer avec l'evenement OnValidate de TField[/b]

  5. #5
    Membre confirmé Avatar de alexmorel
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 196
    Par défaut Le plus
    Le plus facile est de rajoute une contrainte d'uniciter dans la base directement ....

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 68
    Par défaut
    Bonjour,

    ketthy, j'ai un probleme avec ton code....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm.TableBeforePost(DataSet: TDataSet); 
    begin 
      if Table.locate('ville', Dataset.Fields('ville').AsString, []) then 
      raise exception.create('message d''erreur'); 
    end;
    Il y a une erreur "Opérateur ou point virgule manquant" près de ('ville') à Dataset.Field('ville').

    alexmorel, peux tu m'en dire plus sur les contraintes d'uniciter, comment ça marche et ou ça se trouve.
    J'utilise une base Access.

    merci à vous

  7. #7
    Membre confirmé Avatar de alexmorel
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 196
    Par défaut voilà
    Voilà tu clique dans Access sur le champ approprié

    1) tu vas dans l'onglet général en bas de page..
    2) sur indexé tu selectionne "oui- Sans doublon"
    3) Message si erreur "Vous ne pouvez rentre 2x la meme valeur"

    Et voilà

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 68
    Par défaut
    Merci alexmorel, mais ça ne change rien.

    Toujours erreur de violation de clé

  9. #9
    Membre confirmé Avatar de alexmorel
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 196
    Par défaut tu peux tester ça
    Voilà un test

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    With Query do
      Begin
         SQl.Clear;
         SQL.Add(Select count(*) from ta_table where le_champ='''+DBEdit.Text +''');  //On recherche combien de fois il existe
         Execute;
         If Field(0)=0 Then Showmessage('ok');   //si n'y est pas dans la base
      End;
    Voilà transforme comme tu veux

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 68
    Par défaut
    SQL n'est pas reconnu par Delphi,

    j'utilise Delphi 4 entreprise et Access 2000.

    Est ce que cela vient de Delphi ou je dois mettre quelque chose devant SQL.clear ?

  11. #11
    Membre confirmé Avatar de alexmorel
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 196
    Par défaut euh
    sa doit exister Query.sql.clear;

    tu utilise quel composant ...

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 68
    Par défaut
    Oui ça existe, j'ai mis devant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DataModule.Query.SQL.Clear;
    Par contre mon DBEdit est connecté sur une table et non sur une requête. Pour ajouter j'utilise le code suivant...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DataModule.Table.insert;

  13. #13
    Membre confirmé Avatar de alexmorel
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 196
    Par défaut alors
    Met un Tedit normal et tu test avant ajout !!

    Euh et je crois sinon que sur ta_table tu as l'option BeforeConnect... ou une option du genre before...

    C'est avant insertion execute ce test et si positif continu sinon tu termine

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 68
    Par défaut
    Je ne sais pas ajouter dans une base de donnée d'une autre manière qu'avec les DBEdit.

    Je suis un débutant.

  15. #15
    Membre confirmé Avatar de alexmorel
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 196
    Par défaut tiens
    Tu crée un Query.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    With ton_query Do
      Begin
         Active:=false;
         Sql.Clear;
         Sql.Add('Insert into ta_table(champ1, champ2, ...) values(valeur_cahmp1, valeur_cahmp2, '+ton_tedit.text+')');
         Execute;
         Active:=True;
      End;
    Et voilà !!

    Pose si t'as d'autre question

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 68
    Par défaut
    il y a une erreur sur execute : identificateur non déclaré.

    Merci beaucoup en attendant

  17. #17
    Membre confirmé Avatar de alexmorel
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 196
    Par défaut tiens
    excuse sais

    sa doit etre sa

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 68
    Par défaut
    J'ai voulus envoyer un champ dans une table seulement en cliquant sur un bouton.

    La table est composée que d'un champ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    procedure TForm.Button1Click(Sender: TObject);
    begin
         With DataModule.Query1 Do
      Begin
         Active:=false;
         Sql.Clear;
         Sql.Add('Insert into table (champ) values(TEST)');
         ExecSQL;
         Active:=True;
      End;
    end;
    Lorsque je clique sur le bouton j'ai une erreur SQL générale, trop peu de paramètres. 1 attendu.

    Comment dois je faire pour envoyer une valeur dans un champ en cliquant seulement sur un bouton?

    Merci

  19. #19
    Membre confirmé Avatar de alexmorel
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 196
    Par défaut ouai
    ta déclare dans ton Query sa connection ?

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 68
    Par défaut
    En fait j'ai trouvé pour la requete par contre pour ce qui est de la comparaison, le premier sujet que j'ai posté, je n'ai pas trouvé.

    J'aimerais comparer un DBEdit avec une DBLookupListBox,
    c'est a dire, lorsque je rentre un enregistrement dans mon DBEdit, si celui se trouve déja dans la DBLookupListBox, delphi renvois un message d'erreur.

Discussions similaires

  1. DBLookupListBox et ComboBox avancés
    Par gside dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/04/2007, 10h22
  2. atteindre la cellule d'un DBGRID ou DBLOOKUPLISTBOX
    Par hocine dans le forum Bases de données
    Réponses: 3
    Dernier message: 09/03/2006, 10h55
  3. problème DBLookupListBox selection
    Par kardevlop dans le forum Bases de données
    Réponses: 11
    Dernier message: 17/08/2004, 11h53
  4. récupérer la valeur du 2ème champ dans un DBLookUpListBox
    Par jakouz dans le forum Bases de données
    Réponses: 3
    Dernier message: 20/07/2004, 16h45
  5. [ADODataSet][DBLookUpListBox] SelectedItem non rafraichit
    Par Shabata dans le forum Bases de données
    Réponses: 3
    Dernier message: 06/07/2004, 09h36

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