cs_Jupiter58
Messages postés13Date d'inscriptionjeudi 27 novembre 2008StatutMembreDernière intervention22 juin 2011
-
22 mai 2010 à 02:28
cs_Jupiter58
Messages postés13Date d'inscriptionjeudi 27 novembre 2008StatutMembreDernière intervention22 juin 2011
-
22 mai 2010 à 15:39
Salut, j'ai réalisé une table sous Delphi5, et je la affiché sur le DBGrid, mais j'ai pas réussi à accéder aux champs de la table, voila j'ai utilisé cette instruction:
TTable1.message-recu.Value
mais je reçois ce message d'erreur: identificateur non déclaré 'message'!
même quand j'utilise le nom réel de la table comme suit:
TTrafic.message-recu.Value il m'affiche ce message d'erreur : TTrafic identificateur non déclaré!!!!!!
Je sais pas ou est le problème , aidez moi S.V.P
Merci.
ThWilliam
Messages postés418Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention26 novembre 20134 22 mai 2010 à 10:32
Salut.
Houla, que d'erreurs !
Ce qui démontre que tu n'as pas consulté l'aide de Delphi ou des tutoriels !
1) "message-recu" : n'est pas un nom de champ valide. Tu dois respecter les caractères autorisés comme pour déclarer une variable. Le signe "-" est un opérateur, donc interdit. "message_recu" = ok.
Conseils: n'utilise que des lettres (sans accents), des chiffres et "_", mets un nom de champ le plus court possible, et perso, je mets toujours les identificateurs de champs en majuscules: ce qui donnerait ici : "MSG_REC".
2) "TTable1.message-recu.Value" : après "TTable1.", Delphi attend une propriété ou une fonction du composant TTable. Consulte l'aide sur TTable et tu verras toutes les propriétés. Pour lire ou écrire la valeur d'un champ, il y a 2 solutions :
Edit1.Text:= TTable1.FieldValues['MSG_REC'];
Comme FieldValues retourne un variant, je préfère cette solution :
Edit1.Text:= TTable1.FieldByName('MSG_REC').AsString;
cs_Jupiter58
Messages postés13Date d'inscriptionjeudi 27 novembre 2008StatutMembreDernière intervention22 juin 2011 22 mai 2010 à 13:55
Bonjour, Merci bien Thierry , j'ai essayé cette instruction, j'ai réussie dans la phase de compilation mais j'ai pas pu éxecuter le programme, voila l'instruction que j'ai utilisé:
Table1.FieldValues['Recu']='1' , je veux dire si le champ MESSAGE REÇU est à 1 alors ...
Est ce que cette instruction est valide?
Je vous remerciez pour la deuxième fois.
ThWilliam
Messages postés418Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention26 novembre 20134 22 mai 2010 à 14:14
"si le champ MESSAGE REÇU est à 1 alors ..."
Donc tu veux lire la valeur du champ et non pas la modifier !
if Table1.FieldValues['Recu'] = '1' then ...
ou, je préfère :
if Table1.FieldByname('Recu').asString = '1' then ...
Avec ton code Table1.FieldValues['Recu']:= '1' : tu modifies la valeur du champ.
Ce qui ne marchera pas, car ta table n'est pas en mode édition.
Pour modifier la valeur d'un champ de l'enregistrement en cours :
Table1.Edit; // mise en mode édition de la table
Table1.FieldByName('Recu').asString: = '1'; //affectation de la valeur
Table1.Post; // enregistrement de la modification
cs_Jupiter58
Messages postés13Date d'inscriptionjeudi 27 novembre 2008StatutMembreDernière intervention22 juin 2011 22 mai 2010 à 15:39
Salut, j'ai n'arrive pas à exécuter le programme, voila le code complet, Est ce que vous pouvez m'aidez?
procedure TForm1.Button1Click(Sender: TObject);
var mp,i,k, L:integer; ic, c : string;
T:array [1..20] of string;
v:boolean;
begin
for i:=1 to 10 do
Begin
ic := 'c' + IntToStr (i);
mp:=0;
k:=0;
table1.first;
While not Table1.Eof do
begin
if (Table1.FieldByname('Recu').asString ='1') and (Table1.FieldByname('Type-msg').asString= 'Forward') and (Table1.FieldByname('Capteur').asString=ic) then
begin
k:=k+1;
T[k]:= Table1.FieldByname('ID-msg').asString;
end;
table1.next;
end;
FOR L:= 1 TO k do
Begin
table1.first;
v:=false;
While (not Table1.Eof) and (v=false) do
begin
if (Table1.FieldByname('Msg-envoyé').asString'1') and (Table1.FieldByname('Type-msg').asString 'Forward') and (Table1.FieldByname('Capteur').asString =ic) then
begin
if Table1.FieldByname('ID-msg').asString =T[L]then
v:=true;
end;
table1.next;
end;
If v=false then
begin
mp:=mp+1;
end;
if mp>5 then
begin
table2.edit;
Table2.FieldByName('capteur').asString:= 'ic';
Table2.FieldByName('Regle').asString :='R3';
Table2.FieldByName('Etat').asString:= 'Anormal';
Table2.post;
end
else
begin
table2.edit;
table2.fieldByName('capteur').AsString:='ic';
table2.fieldByName('regle').AsString:='R3';
table2.fieldByName('ETAT').AsString:= 'Normal';
end;
end;
end;
end;
end.
ic représente les capteur de c1 à c10.
Voila le message d'erreur: [Conseil] Unit1.pas(35): La variable 'c' est déclarée mais jamais utilisée dans 'TForm1.Button1Click'
Quand je l'exécute il fais le parcours de c1 à c10 sans rien faire.