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

Signaler
Messages postés
4
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
18 juin 2010
-
ThWilliam
Messages postés
418
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
-
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

Messages postés
49
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
30 mars 2011

Bonjour!
Tu as déjà des enregistrements dans ta table?


@++
Messages postés
4
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
18 juin 2010

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
Messages postés
49
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
30 mars 2011

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 !

@++
Messages postés
4
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
18 juin 2010

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
Messages postés
49
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
30 mars 2011

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 !


@++
Messages postés
4
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
18 juin 2010

Merci beaucoup et toi aussi bonne prog
Messages postés
418
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
3
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