Des données qui ne s'actualisent qu'au redemarrage du sistème. Comment y remédie
Leader2000
Messages postés184Date d'inscriptionmercredi 24 mai 2006StatutMembreDernière intervention28 août 2015
-
10 juil. 2012 à 18:36
pierrotk10d
Messages postés110Date d'inscriptionmardi 13 novembre 2007StatutMembreDernière intervention 2 février 2024
-
11 juil. 2012 à 22:02
Salut!
dans l'evènement onCreate, j'ai écrit ces codes afin d'avoir les noms listés dans un combobox. Curieusement, quand je sors et reviens sur ce form ou se trouve ce combobox. Les noms n'y apparaissent pas (dans le combox). Le dit combobox actualise les données (les noms) quand je redemarre le sisteme. Que faire?
J'ai fait company.Close; company.Open;
sans resultat.
begin
company.Open;
company.DisableControls;
try
while not company.Eof do
begin
cbxnome.Items.Add(company.FieldByName('prenom').AsString);
company.Next;
end;
finally
end;
Merci,
Developper est une dimension pour moi.
Leader2000
A voir également:
Des données qui ne s'actualisent qu'au redemarrage du sistème. Comment y remédie
pierrotk10d
Messages postés110Date d'inscriptionmardi 13 novembre 2007StatutMembreDernière intervention 2 février 20243 10 juil. 2012 à 21:27
Bonjour,
Je ne sait pas comment tu appelles ta form si c'est par la méthode Show ou ShowModal mais il ne devrait pas y avoir de problème puisque le TComboBox est rempli à la création de la fiche. Essaies dans l'événement OnShow de la fiche pour voir ce qui ce passe
Il manque le EnableControls; après le Finally
Si la table Company ne sert plus une fois le TComboBox rempli tu peux la refermer. Company.Close;
Le "With Company do begin" permet de ne pas trop s'user le bout des doigts en évitant de retaper x fois Company. Tu verras quand tu seras vieux!!!
pierrotk10d
Messages postés110Date d'inscriptionmardi 13 novembre 2007StatutMembreDernière intervention 2 février 20243 10 juil. 2012 à 22:25
Re bonjour,
Petite correction. Une fois le TComboBox rempli la table est sur l'EOF et à l'appel suivant elle y est toujours donc tu n'as rien dans ton TCombobox. Il faut donc mettre la table sur le premier enregistrement avant de remplir le TComboBox ou enregistrer la position de l'enregistrement actif avant le first avec PosEnr := Company.GetBookmark et se repositionner dessus une fois le TComboBox rempli avec un company.GotoBookmark(PosEnr) dans le finally;
Leader2000
Messages postés184Date d'inscriptionmercredi 24 mai 2006StatutMembreDernière intervention28 août 2015 11 juil. 2012 à 08:49
Je crois que c'est moi qui n'était peut être pas clair dans mon language.
Au fait, quand je rempli ma table avec du "append" et "post", les nouvelles données sont théoriquement dans mon combobox (je dirai dans la mémoire). Mais jusque là pas encore dans le dit combobox. Les données y apparaissent seulement quand je sors totalement du sistème et le relance.
Ma preoccupation est celle-ci: pourquoi les données ne sont pas actualisées à l'instant... il faut d'abord relancer mon programme (delà elles reapparaissent!).
pierrotk10d
Messages postés110Date d'inscriptionmardi 13 novembre 2007StatutMembreDernière intervention 2 février 20243 11 juil. 2012 à 22:02
Bonjour,
Il y a deux solutions.
Soit la fiche (cbxnome) qui contient le TComboBox est crée dynamiquement (donc détruite à la fermeture). Dans ce cas le TComboBox sera toujours rempli avec tous les enregistrements de ta table lors de sa création, car on parcours toute la table du 1èr au dernier enreg dans l'évènement OnCreate de la fiche.
// Exemple de fiche crée dynamiquement
procedure TForm1.PrenomClick(Sender: TObject);
Var fCombo: TfCombo; // fCombo est la fiche qui contient le TComboBox
begin
fCombo := TfCombo.Create(Self);
Try
fCombo.ShowModal;
Finally
fCombo.Free;
end;
end;
Soit la fiche est toujours en mémoire (non détruite à la fermeture) dans ce cas il te faut rajouter dans l'événement AfterPost (par exemple)de ta table un bout de code qui ajoute aux items du TComboBox le champs prénom de l'enregistrement que tu viens d'insérer dans la table.