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

Messages postés
4
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
18 juin 2010
- - Dernière réponse : 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
Afficher la suite 

7 réponses

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


@++
Commenter la réponse de cleecky
Messages postés
4
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
18 juin 2010
0
Merci
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
Commenter la réponse de bigjuice69
Messages postés
49
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
30 mars 2011
0
Merci
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 !

@++
Commenter la réponse de cleecky
Messages postés
4
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
18 juin 2010
0
Merci
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
Commenter la réponse de bigjuice69
Messages postés
49
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
30 mars 2011
0
Merci
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 !


@++
Commenter la réponse de cleecky
Messages postés
4
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
18 juin 2010
0
Merci
Merci beaucoup et toi aussi bonne prog
Commenter la réponse de bigjuice69
Messages postés
418
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
2
0
Merci
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
Commenter la réponse de ThWilliam