Delphi et MySQL - champ AutoInc et manière de poster les modifications

bigjuice69 Messages postés 4 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 18 juin 2010 - 18 juin 2010 à 16:25
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 - 19 juin 2010 à 12:08
Bonjour à tous,

Question #1
J'ai une application qui se branche à une table MySQL (employe). Cette table contient plusieurs champs, dont le champ PRIMAIRE : idemploye INT AutoInc.

Mais lorsque j'essais d'ajouter un employe dans mon application:
employe.Append;
employe.FieldByName('num_employe').AsString := GetLastEmpNo {00001};
employe.Post;
employe.ApplyUpdates(-1);


Le programme me retourne une erreur : Field "ifemploye" must have a value.

Quelqu'un peut m'éclairer ?

---------------------------------------------------------------------------
Question #2

J'ai une application qui sera exécutée par plusieurs utilisateurs, qui feront des modifications dans la même base de données. Cette application utilise les composantes suivantes pour se connecter aux tables :
- TSQLConnection
- TSQLDataset
- TDataSetProvider
- TClientDataSet
- TDataSource

La manière dont je post les records présentement est comme plus haut dans mon message : Append, Post et tout suite après le post je fais un ApplyUpdates....
Je ne trouves pas ça très pratique... Mais si nous attendons avant de faire le ApplyUpdates, les utilisateurs peuvent modifier les mêmes records et certaines modifications ne seront pas enregistrées.

Merci de m'éclairer sur ce point aussi

Merci énormément à tous ceux qui prendront du temps pour répondre à ma question!

BigJuice69

7 réponses

cleecky Messages postés 49 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 30 mars 2011
18 juin 2010 à 16:52
Bonjour!
Tu as déjà des enregistrements dans ta table?


@++
0
bigjuice69 Messages postés 4 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 18 juin 2010
18 juin 2010 à 16:57
Bonjour cleecky,

Non, présentement la table est vide. Mais même s'il y a des enregistrements... ça ne fonctionne pas plus. J'ai fais le test!

BigJuice69
0
cleecky Messages postés 49 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 30 mars 2011
18 juin 2010 à 17:08
Cette question pour répondre à ta première question, je ne suis pas encore très à l'aise avec delphi, et je n'utilise pas la même technique que toi pour modifier les données de ma base MySQL.
Mais ce qui est sur c'est que pour l'ajout des auto-incrément je ne rempli pas le champs...
C'est à dire requête de ce type :

maRequete := 'insert into employe values('''',''jean'',''jacques'',''cadre'',1500);'


J'espère que ça pourra t'éclairer un peu !

@++
0
bigjuice69 Messages postés 4 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 18 juin 2010
18 juin 2010 à 17:11
d'accord cleecky, et oui ta manière fonctionne. Mais moi ce que je voudrais c'est faire l'ajout d'enregistrements à partir des composantes déposées sur la Form.

Merci beaucoup de ton aide quand même
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cleecky Messages postés 49 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 30 mars 2011
18 juin 2010 à 17:14
Hihi !
Désolé de ne pas pouvoir t'aider plus je suis au maximum de mes capacités
Il y a beaucoup de gens doué sur ce forum...

Bonne chance alors et bonne prog !


@++
0
bigjuice69 Messages postés 4 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 18 juin 2010
18 juin 2010 à 17:17
Merci beaucoup et toi aussi bonne prog
0
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
19 juin 2010 à 12:08
Bonjour.

Beaucoup de bases de données ne donnent pas la possibilité de connaitre la prochaine valeur d'un champ AutoInc. Je n'ai jamais travaillé avec MySQL, mais il est probable que la valeur ne soit définie qu'après le Post, ce qui expliquerait l'erreur que tu rencontres.
Une suggestion : pourquoi ne pas incrémenter toi-même le numéro de l'employé ? Beaucoup de logiciels utilisent pour ce faire une table contenant les paramètres, dont un champ servant à stocker le dernier numéro ajouté. Il suffit alors de lire la valeur, de l'incrémenter, de "poster" la table Employés, puis de faire un Edit...Post de la table paramètres.

A +
Thierry
0
Rejoignez-nous