Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[wd11] ajouter une date avec une requete insert

8 réponses
Avatar
Serge
Bonjour,

Avec une requete insertion réalisée avec l'editeur de requete windev 11, je
n'arrive pas à mettre à jour un champs date d'une base de données SQL
serveur 2000, j'ai l'erreur suivante :

Erreur de syntaxte lors de la conversion d une chaine de caractere en type
de données smalldatetime.

extrait de mon code
DateJour est une date = DateSys() --> Me renvoie 20101109

.....
REQ_MAJ.ParamDate = DateJour
.....

Si Pas HexecuteRequete(REQ_MAJ) alors
Erreur( .....)
Fin

Le champs dans ma base de données SQL à mettre à jour est du type
smallDateTime, j'arrive à mettre à jour d'aute type de champs pas ce type
!!!


Merci de votre aide

8 réponses

Avatar
tjfromparis
1ere solution : (si tu as une analyse )

// recherche de l'enregistrement...

madate est une date
table.champDate = madate
Hmodifie (table)

2eme solution :

construit ta requête dynamiquement du style

_sql est une chaîne
_sql = " INSERT INTO TABLE "
_sql += "( ch1, ch2 )
_sql += " values "
_sql += " (valeur1, CAST('"+maVariableDate + "' as datetime) "

SI SQLExec(_sql, "SQLinsert") = Vrai ALORS
info("youpi")
SINON
erreur(SQL.MesErreur)
FIN


3eme solution :
essaie de claquer le CAST directement dans ta requete (WDR). Je sais
pas si il va le prendre.


Je prefere la 2


On 9 nov, 15:49, "Serge" <serge.g8[NOSPAM]@laposte.net> wrote:
Bonjour,

Avec une requete insertion r alis e avec l'editeur de requete windev 11, je
n'arrive pas mettre jour un champs date d'une base de donn es SQL
serveur 2000, j'ai l'erreur suivante :

Erreur de syntaxte lors de la conversion d une chaine de caractere en typ e
de donn es smalldatetime.

extrait de mon code
DateJour est une date = DateSys() --> Me renvoie 20101109




.....
REQ_MAJ.ParamDate = DateJour
.....

Si Pas HexecuteRequete(REQ_MAJ) alors
    Erreur( .....)
Fin

Le champs dans ma base de donn es SQL mettre jour est du type
smallDateTime, j'arrive mettre jour d'aute type de champs pas ce type
!!!

Merci de votre aide
Avatar
Gilles
Serge a utilisé son clavier pour écrire :
Bonjour,

Avec une requete insertion réalisée avec l'editeur de requete windev 11, je
n'arrive pas à mettre à jour un champs date d'une base de données SQL serveur
2000, j'ai l'erreur suivante :




Avec l'accès natif ou un ODBC?
Avatar
tjfromparis
je n'utilise jamais les acces natif PCS
j'evite l'odbc.


me suis fais une classe qui peut se connecter à peu pres partout
(oledb, HFCS, odbc)
apres c'est dans le fichier de conf de l'appli que ca se passe

dans le cas d'une connection sqlserver ca donne
:m_IDConnexion =
SQLConnecte(:m_DBHote,:m_DBLogin ,:m_DBpwd ,:m_DBDatabaseName , :m_TypeBase CnxString,:m_DBProvider)

ou :
:m_TypeBaseCnxString = "OLEDB"
:m_DBProvider = hOledbSQLServer


par contre, les procédures stockées windev c'est pas son truc.
faut utiliser les acces alternatif pour ca.


On 9 nov, 19:52, Gilles wrote:
Serge a utilis son clavier pour crire :

> Bonjour,

> Avec une requete insertion r alis e avec l'editeur de requete windev 11 , je
> n'arrive pas mettre jour un champs date d'une base de donn es SQL serve ur
> 2000, j'ai l'erreur suivante :

Avec l'acc s natif ou un ODBC?
Avatar
Serge
non j'uitlise l'odbc
@+


"Gilles" a écrit dans le message de
news: 4cd9988b$0$21241$
Serge a utilisé son clavier pour écrire :
Bonjour,

Avec une requete insertion réalisée avec l'editeur de requete windev 11,
je n'arrive pas à mettre à jour un champs date d'une base de données SQL
serveur 2000, j'ai l'erreur suivante :




Avec l'accès natif ou un ODBC?


Avatar
Gilles
Serge a présenté l'énoncé suivant :
non j'uitlise l'odbc
@+



c'est donc l'ODBC qui ne fait pas son travail de casting à toi de le
faire à sa place. (Ce qui parait logique, tu passes une chaine à un
champ date)...

Avec un accès natif, le problème ne se poserait pas, les casts sont
automatiques.
Avatar
Gilles
a couché sur son écran :
je n'utilise jamais les acces natif PCS
j'evite l'odbc.
me suis fais une classe qui peut se connecter à peu pres partout
(oledb, HFCS, odbc)
apres c'est dans le fichier de conf de l'appli que ca se passe



Perso, j'évite de coder à l'ancienne. L'outil nous permet d'avoir une
belle couche pour la gestion des données et d'éviter d'étaler des kilos
de lignes SQL superflues et qui rendent le code lourd...

Je n'utilise le SQL manuel qu'en cas de requête complexe, mais pour
ajouter un enregistrement dans une table, rien ne vaut un hAjoute.

Moins il y a de code... moins il y a de bugs.
Avatar
tjfromparis
effectivement. insert/ delete / update ca marche tres bien avec
l'editeur.
Pour des requêtes utilisant des ordres un peu plus évolués, les WDR
sont léger.
Les procédures stockées j'en parle même pas.
(et en plus sur du HFCS c'est le pompon !)

d'ailleurs au niveau perf / volume HFCS, quelqu'un a des stats d'une
base de prod (pas une base de test avec 1 milliard
d'enregistrements :)

On 10 nov, 20:10, Gilles wrote:
a couch sur son cran :

> je n'utilise jamais les acces natif PCS
> j'evite l'odbc.
> me suis fais une classe qui peut se connecter peu pres partout
> (oledb, HFCS, odbc)
> apres c'est dans le fichier de conf de l'appli que ca se passe

Perso, j' vite de coder l'ancienne. L'outil nous permet d'avoir une
belle couche pour la gestion des donn es et d' viter d' taler des kilos
de lignes SQL superflues et qui rendent le code lourd...

Je n'utilise le SQL manuel qu'en cas de requ te complexe, mais pour
ajouter un enregistrement dans une table, rien ne vaut un hAjoute.

Moins il y a de code... moins il y a de bugs.
Avatar
Xavier Diab
Prenez l'habitude de fonctionner en format de date ODBC 'AAAA-MM-JJ'
Et si là ça ne fonctionne pas, ajouter un TO_DATE ou DATEFORMAT selon
l'sgdb utilisé