IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

Zeos + PostgreSQL + champ NOT NULL


Sujet :

Lazarus Pascal

  1. #1
    Invité
    Invité(e)
    Par défaut Zeos + PostgreSQL + champ NOT NULL
    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:
    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;
    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 ?

    Merci. Cordialement.
    Gilles

    PS : Questions subsidiaires.
    1. 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
    2. 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 ?
    Dernière modification par Invité ; 01/08/2011 à 20h00.

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 885
    Points : 11 405
    Points
    11 405
    Billets dans le blog
    6
    Par défaut
    ça revient à mettre une valeur par défaut, non ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Oui... mais pourqoi cette erreur est-elle générée ? Je vais vérifier sur une table mySQL "identique" si j'ai le même comportement.

    Cordialement. Gilles

Discussions similaires

  1. Update sur un champ NOT NULL avec une valeur NULL sans erreur
    Par HectorPriamide dans le forum Requêtes
    Réponses: 8
    Dernier message: 26/01/2012, 22h25
  2. Réponses: 1
    Dernier message: 23/07/2010, 15h28
  3. update ou champs not NULL
    Par magic charly dans le forum Oracle
    Réponses: 2
    Dernier message: 19/02/2007, 17h08
  4. problème de champs not null qui sont marqués null à la création
    Par Elianora la blanche dans le forum Outils
    Réponses: 6
    Dernier message: 02/02/2007, 10h33
  5. [TStringField] inserer dans un champs NOT NULL une chaine vi
    Par kase74 dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/09/2005, 15h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo