[RESOLU]Test d'un champs vide

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
omega
Messages : 633
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

[RESOLU]Test d'un champs vide

Message par omega »

Bonjour

J'ai une table qui contient, entre autres, un champs numérique nommé statut. Au moment de la création de ma table, le champs statut ne contient rien du tout. Mon problème est le suivant:

Regardez ce code:

Code : Tout sélectionner

sql="Update MaTable set statut='1' where statut <>'1' "
La table contient environ une centaine d'enregistrements et statut est vide dans tous les enregistrements.
Cette instruction ne fait rien comme si statut n'est pas différent de 1.

Merci
Dernière modification par omega le mer. 03/nov./2021 15:02, modifié 1 fois.
Win7 (x64) 64 bits Pb 5.72
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: Test d'un champs vide

Message par Marc56 »

Si c'est un champs numérique alors status=1 pas '1' :wink:
Avatar de l’utilisateur
omega
Messages : 633
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Test d'un champs vide

Message par omega »

Bonjour Mar56

La syntaxe sql exige ce format d'écriture: where x='1' et non pas where x=1. Par contre on peut écrire if x=1 .....

Cela ne répond donc pas à ma question

Merci d'avoir essayé
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Test d'un champs vide

Message par GallyHC »

sql="Update MaTable set statut='1' where statut is null" > null n'est pas une valeur donc pas comparable.
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: Test d'un champs vide

Message par Marc56 »

omega a écrit : mer. 03/nov./2021 13:54 La syntaxe sql exige ce format d'écriture: where x='1' et non pas where x=1. Par contre on peut écrire if x=1 .....
Tu peux parfaitement te passer des ' ' pour des valeurs numériques dans un champs NUMERIC

Code : Tout sélectionner

UseSQLiteDatabase()

Filename$ = GetTemporaryDirectory() + "Test.sqlite"

If CreateFile(0, Filename$)
  Debug "Fichier de base de données créé"
  CloseFile(0)
EndIf

If OpenDatabase(0, Filename$, "", "")
  Debug "Connecté à PureBasic.sqlite"
  If DatabaseUpdate(0, "CREATE TABLE MaTable (statut NUMERIC);")
    Debug "Table créée"
  EndIf
  
;     If DatabaseUpdate(0, "INSERT INTO MaTable VALUES ('1');"  + 
;                          "INSERT INTO MaTable VALUES ('2');"  +
;                          "INSERT INTO MaTable VALUES ('3');")  
  
  If DatabaseUpdate(0, "INSERT INTO MaTable VALUES (1);"  + 
                       "INSERT INTO MaTable VALUES (2);"  +
                       "INSERT INTO MaTable VALUES (3);")
    

      
    Debug "INSERT 3 OK"
  EndIf  
  
  ;SQL.s = "Update MaTable set statut='1' where statut <>'1' "
  SQL.s = "Update MaTable set statut = 1 where statut <> 1 "
  
  If DatabaseUpdate(0, SQL)
    Debug "UPDATE OK"
  EndIf
  
EndIf

CloseDatabase(0)
(testé aussi avec MariaDB et PostgreSQL)

La solution est donnée par GallyHC

Code : Tout sélectionner

SQL.s = "UPDATE MaTable SET statut = 1 WHERE statut IS NULL;"
(avec ou sans ' ' )

:wink:
Avatar de l’utilisateur
omega
Messages : 633
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

[RESOLU] Test d'un champs vide

Message par omega »

Merci beaucoup à toi GallyHc merci à toi aussi Marc pour cette précision de format. De toute façon, les deux solutions marchent bien avec ou sans quotes. Je les ai testées toutes les 2.

IS NULL est exactement ce que je cherchais. Je viens de tester et a marche !

Merci encore et bonne continuation
Win7 (x64) 64 bits Pb 5.72
Répondre