Une bouée svp................

stampe Messages postés 7 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 29 avril 2004 - 31 déc. 2002 à 17:13
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 - 31 déc. 2002 à 18:27
Toujours sur le même sujet???. Mon DBLookupComboBox

Bon j'ai réglé mon 1er problème
Maintenant mon souci est l'enregistrement d'un nouvel enregistrement dans ma base de données .

Sur l'évenement de ma bouton j'ai inscrit ce code :

procedure TForm3.BitBtnVALIDERClick(Sender: TObject);

CD.Insert;
CD.FieldByName('NUMERO').AsInteger := StrToInt(NUMCD.Text);
CD.FieldByName('NUMCATEGORIE').AsInteger := BDLKCATEGORIE.KeyValue;
CD.FieldByName('NUMSESSION').AsInteger := DBLKSESSION.KeyValue;
CD.FieldByName('NUMTYPECD').AsInteger := DBLKTYPE.KeyValue;
CD.FieldByName('ESPACE').AsString := EditESPACE.Text;
CD.FieldByName('CONTENU').AsString := MemoDESCRIPTIF.Text;
CD.Post;
end;

cette méthode fonctionne pour modifier un enregistrement ( edit ), et pour naviguer dans la base ( first, last? )?

je rappelle qu'à l'écran le dblookupcombobox affiche un descriptif : par exemple « Logiciel » mais dans la table n'est inscrit que son identifiant, c'est à dire « 4 ».

Lorsque je tente d'enregistrer, l'erreur suivante apparaît :

? Projet CDREPERTOIRE.EXE raised exception class EvariantTypeCastError with message ?Couldn?t convert variant of type (Null) into type (Integer)?. Process stopped.... ?

j'ai essayer avec cette méthode :

CD.FieldByName('NUMCATEGORIE').AsInteger :=strtoint(BDLKCATEGORIE.text);

Mais là aussi je rencontre une erreur.

Auriez-vous une astuce.

Merci

stampe
apprenti programmeur :big)

1 réponse

cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
31 déc. 2002 à 18:27
J'ai l'impression que tu te compliques beaucoup le travail...

Utilise des composants orientés données ! Par exemple pour NUMCD utilise un TDBEdit, Ainsi la valeur saisie est directement stockée dans la base sans aucune intervention de ta part. De même tu n'utilise pas comme il faut le TDBLookUpComboBox. Il faut le lié directement à un champ de la table CD ainsi la valeur est mise à jour directement.

Surt ta fiche, tu mets trois boutons :
1 bouton insérer que ne fait que CD.Insert
1 bouton valider qui ne fait que CD.Post
1 bouton annuler qui ne fait que CD.Cancel

Les composants orientiés données seront remplis par l'utilisateur après l'appui sur le bouton "Insérer". Tous les composants de saisie doivent être pris sur la palette "ControleBD" de delphi.

Tu éviteras alors toutes les erreurs de conversion.

--- :sleepy) Nono40@fr.st :sleepy) ---
Nouveau ---> Nono40.fr.st
0
Rejoignez-nous