ADOTable... Disable Append

Résolu
mtaallah Messages postés 28 Date d'inscription lundi 10 décembre 2001 Statut Membre Dernière intervention 13 décembre 2006 - 8 nov. 2006 à 20:26
mtaallah Messages postés 28 Date d'inscription lundi 10 décembre 2001 Statut Membre Dernière intervention 13 décembre 2006 - 9 nov. 2006 à 11:08
Salut à tous,
   Lors de la saisie des valeus dans un DBGrid, je voudrai effectuer un certain genre de vérification, en modifiant n'importe quelle valeur, il faut vérifier un champ s'il est vide ou non...
   J'ai essayé la procédure suivante:
procedure TFormNote.TntDBGrid1CellClick(Column: TColumn);
   begin
     If ADOTable1.FieldByName('Ref').Value='' then    // Ref est la clé primaire du table...
        Begin
           ShowMessage ('YOU CAN NO ADD NEW RECORDS!');
           ADOTable1.delete;
           ADOTable1.Prior;                                                  
       end;
  end;

   mais il m'affiche le message suivant:
          Can not convert variant of type (String) into type (Double)

 Mon but c'est de ne pas permettre l'ajout de nouveaux enregistrements automatiquement... je cheche une procedure de type disable append, append.disable... etc.
Merci

4 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
9 nov. 2006 à 00:03
Salut,

Tu peux aussi bien mettre la propriété ReadOnly du contrôle TDbGrid à True ou encore modifier la propriété Options de ce même contrôle (dgEditing à false par exemple).

En ce qui concerne le message d'erreur "Can not convert...", c'est normal.
Tu as deux possibilités :
1- Utiliser la fonction VarIsNull :
If VarIsNull(ADOTable1.FieldByName('Ref').Value) then...

Mais ce n'est pas la méthode la plus efficace (le traitement des variants est lent et gourmand en mémoire).

2- Pour tester si un champ est nul
if AdoTable1.FieldByName('Ref').IsNull then...

Rien qu'en appliquant la méthode indiquée au début de cette réponse, tu ne dois plus avoir besoin de coder une quelconque vérification.

May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.afipa.net
3
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
9 nov. 2006 à 09:01
Utiliser tout simplement l'évènement OnKeyUp :

procedure TForm1.DBGrid1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key =  VK_UP  then  ...//Flèche Haut

  if Key  = VK_DOWN then ...//Flèche bas
end;

May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.afipa.net
3
mtaallah Messages postés 28 Date d'inscription lundi 10 décembre 2001 Statut Membre Dernière intervention 13 décembre 2006
9 nov. 2006 à 00:46
Merci pour votre réponse DelphiProg
je vais essayer d'appliquer tous les consignes (un par un, ça prend du temps) pour savoir si ça règle le problème (je crois qu'il y est en fait, mais il ne faut pas valider une réponse comme acceptée sans l'être sûr... pour ne pas tromper les autres)...
Juste une petite autre question:
   Dans un DBGrid, quelle est la procédure qu'on utilise pour effectuer une vérification dès qu'on sélectionne la cellule (en utilisant les flèches haut et bas du clavier et non pas pointer avec le souris) car procédure OnCellClick ne joue pas ce rôle...
   J'éspèqre que vous m'avez bien compris!
Merci.
0
mtaallah Messages postés 28 Date d'inscription lundi 10 décembre 2001 Statut Membre Dernière intervention 13 décembre 2006
9 nov. 2006 à 11:08
Salut,
  Merci pour tes réponses DELPHIPROG
  C'est ça ce que je cherche.
0
Rejoignez-nous