Bonjour,
Je "revisite" pendant mes vacances le zUpdateSQL avec une base hébergée sur un serveur PostgreSQL 8.4.
L'ensemble fonctionne de manière satisfaisante. Mais j'ai une "incompréhension" : une table est créée dans la base avec des champs déclarés NOT NULL avec ou sans valeur par défaut. Mon DataSource est relié à une dbGrid (en affichage) et des dbEdits pour la modification. Si un champ est vide, lors de l'insert ou de l'update, une erreur précisant que le champ est Null se déclare. J'ai réglé le problème provisoirement dans le Zquery1:
Oui si c'est un varchar... mais si ce n'en est pas un... On dispose du DataType, c'est vrai. Comment se débarrasse-t-on de ce problème autrement que par ce genre de rustine ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 ZQuery1BeforePost(DataSet: TDataSet); var i : integer; begin [..] for i := 0 to ZQuery1.FieldCount -1 do if ZQuery1.Fields[i].Value = Null then ZQuery1.Fields[i].AsString := ''; [...] end;
Merci. Cordialement.
Gilles
PS : Questions subsidiaires.
- Comment peut-on utiliser SELECT FOR UPDATE pour vérifier qu'un enregistrement n'est pas verrouillé (et dans ce cas le verouiller) avec le même zQuery1 (qui alimente la dbGrid) ? Jusqu'à maintenant, j'ai toujours utilisé 2 zQueries : un pour l'affichage de la dbGrid et l'autre pour le SUID (notamment le SELECT FOR UPDATE); Je ne vois vraiment pas comment faire cela avec un unique couple zQuery1+ZUpdateSQL1... mais je ne demande qu'à apprendre
- J'ai essayé le connecteur natif (TPQconnection). L'affichage dans la dbGrid requiert nettement plus de temps qu'avec Zeos. Mais sutout je n'arrive pas à faire fonctionner les DeleteSQL, InsertSQL et UpdateSQL du SQLQuery. Et je ne trouve pas de Doc satisfaisante. Quelqu'un(e) peut m'indiquer une adresse ?
Partager