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

WinDev Discussion :

Conversion de DATE pour SQL Server via OLE DB [WD14]


Sujet :

WinDev

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Par défaut Conversion de DATE pour SQL Server via OLE DB
    Bonjour,

    Quel est le bon format pour remplir une rubrique smalldatetime de SQL
    serveur depuis une requete dans WINDEV14 ?
    J'ai essaye 'AAAAMMJJHHMMSS'
    J'ai essayé 'JJ-MM-AAAA HH:MM:SS'

    j'ai toujours le message
    EIT_ADOCODE : <-2147217913>
    EIT_BASECODE : <295>
    EIT_ODBCDESCRIPTION : <Échec de la conversion d'une chaîne de
    caractères en type de données smalldatetime.>
    EIT_ODBCCODE : <22007>
    EIT_NATIVECODE : <170129>
    Merci,

    Gérard

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 402
    Par défaut
    Salut à toi,

    Serait-il possible d'avoir le code de la requête ?
    As-tu essayé avec l'option hRequeteSansCorrection ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Par défaut
    Merci de ta réponse,

    Pour l'execution de mes requetes c'est :

    bRes = HExécuteRequêteSQL(sdMaRq,SAGE_FACX,hRequêteSansCorrection,sTxtRq)

    Pour le texte, c'est :

    INSERT INTO F_DOCENTETE ( DO_Domaine, DO_Type, DO_Piece, DO_Date, DO_Ref, DO_BLFact, DO_Tiers, AB_No, CA_No, CA_Num, CG_Num, CT_NumPayeur, DE_No, DO_Cloture, DO_Colisage, DO_Condition, DO_Devise, DO_Expedit, DO_Langue, DO_NbFacture, DO_Period, DO_TxEscompte, N_CatCompta, RE_No, DO_Ecart, DO_Imprim, DO_Reliquat, DO_Souche, DO_Statut, DO_Transfere, DO_TypeColis, DO_Ventile, LI_No, RE_NoCaissier, DO_Attente, DO_NoWeb, DO_Regime, DO_Transaction ) VALUES ( 0,1,'00531197A','2009062610511812','00531197',1,'MONPGEN',0,0,'','411000','MONOPRIXP',14, 0, 1, 1,0,1, 0,1,1,0,1,0, 0, 0, 0, 0, 2, 0, 1, 0, 1, 0, 0, '' , 21, 11 )

    C'est du SAGE V15.

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 402
    Par défaut
    Alors après recherche, il s'avère que l'on peut mettre dans INSERT, une date du type '2009-10-03 00:00:00' ou faire un CAST('2009-10-03 00:00:00' AS SMALLDATETIME)

    Après transformation de la date récupérée au format souhaité par SQLServer, on devrait avoir ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO F_DOCENTETE ( DO_Domaine, DO_Type, DO_Piece, DO_Date, DO_Ref, DO_BLFact, 
    DO_Tiers, AB_No, CA_No, CA_Num, CG_Num,
    CT_NumPayeur, DE_No, DO_Cloture, DO_Colisage, DO_Condition, DO_Devise, DO_Expedit, DO_Langue, DO_NbFacture, DO_Period, DO_TxEscompte, 
    N_CatCompta, RE_No, DO_Ecart, DO_Imprim, DO_Reliquat, DO_Souche, DO_Statut, DO_Transfere, DO_TypeColis, DO_Ventile, LI_No, RE_NoCaissier, DO_Attente, DO_NoWeb, DO_Regime, DO_Transaction ) 
    VALUES ( 0,1,'00531197A',CAST('2009-06-26 10:51:18' AS SMALLDATETIME),
    '00531197',1,'MONPGEN',0,0,'','411000','MONOPRIXP',14, 0, 1, 1,0,1, 
    0,1,1,0,1,0, 0, 0, 0, 0, 2, 0, 1, 0, 1, 0, 0, '' , 21, 11 )
    Je n'ai plus de SQLServer sur ma bécane donc je ne peux pas tester.

  5. #5
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 402
    Par défaut
    Finalement, je me suis installé SQLExpress 2005 ^^.

    Donc pour info, les syntaxes suivantes fonctionnent :
    '20090626 15:12:15'
    '20090626'
    '2009-06-26 15:12:15'
    '2009-06-26 15:12:15'

    Pour info également, il ne faut pas les secondes car le type smalldatetime est à la minute près, contrairement au type datetime qui est à la seconde près.

    En espérant que cela t'aide.

    Edit :
    Correction, on peut mettre les secondes, mais ce sera marqué 00 dans la base.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Par défaut
    Je te remercie, j'avais réussi à passer sans mettre l'heure, uniquement 'AAAAMMJJ' !

    Mais j'ai un autre probleme. Après ma connexion, je fait un SET ARITHABORT sur ma base SAGE.
    Mon INSERT sur F_DOCENTETE s'écrit correstement.
    Derriere je dois faire mes INSERT sur F_DOCLIGNE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO F_DOCLIGNE ( DO_Domaine,  DO_Type, CT_Num, DO_Piece, DO_Date, DL_DateBC, DL_PieceBC, DL_Ligne, DO_Ref, AR_Ref, DL_Design, DL_Qte, DL_QteBC, DL_No, DE_No, DL_TTC, 	DL_PUBC, EU_Qte, DL_Valorise) VALUES ( 0,1,'MONPGEN','00531197A','20090626','20090626','BCI000035',1000,'00531197','071090MONOP','OEUFS DE TRUITE MONOPRIX',138,138,1,14,0, 2.5,0, 0 )
    J'ai un message d'erreur : -
    Message d'erreur système :
    Description = Échec de INSERT car les options SET suivantes comportent des paramètres incorrects*: 'ARITHABORT'. Assurez-vous que les options SET définies peuvent être utilisées avec les vues indexées et/ou les index sur les colonnes calculées et/ou les notifications de requête et/ou les méthodes de type de données XML.
    Source = Microsoft OLE DB Provider for SQL Server
    SQL State = 42000
    Error Number = -2147217900
    Native Error Number = 1934
    Le set que je fais après l'ouverture de la connexion est le suivant(mode OLE DB):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    //// Paramètres de la connexion FACTURATION
    SI bModeODBC ALORS
    	SAGE_FACX..Provider 			= hODBC
    	SAGE_FACX..BaseDeDonnées 		= sBaseODBCFac
    SINON
    	SAGE_FACX..Provider 			= hOledbSQLServer
    	SAGE_FACX..BaseDeDonnées 		= sBaseOLEFac
    FIN
    SAGE_FACX..Utilisateur 				= sBaseLogon
    SAGE_FACX..MotDePasse 				= sBasePw
    SAGE_FACX..Serveur 					= sAdresseServeur
    SAGE_FACX..Accès 					= hOLectureEcriture
    //
    sRqOptionOn est une chaîne = "SET ANSI_PADDING,ANSI_WARNINGS,CONCAT_NULL_YIELDS_NULL,ARITHABORT,QUOTED_IDENTIFIER,ANSI_NULLS ON"
    // Ouverture de la connexion
    SI PAS HOuvreConnexion(SAGE_CPTX) ALORS
    	sMerr = HErreurInfo(hErrComplet)
    	RENVOYER Faux
    FIN
    La connexion n'est pas fermée après l'insert de F_DOCENTETE.

  7. #7
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 402
    Par défaut
    Utilises-tu également l'option hRequeteSansCorrection pour le SET car je ne vois le code d'exécution de sRqOptionOn ?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Par défaut
    Oui bien sur, car j'utilise la meme procedure pour executer mes requete.

    Je me demandais si le "SET ARITHABORT ON", on doit le faire avant chaque INSERT ?

  9. #9
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 402
    Par défaut
    J'ai trouvé cela et ça a l'air d'avoir fonctionné pour la personne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER DATABASE "nomDeLaBase" SET ARITHABORT ON

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Par défaut
    Merci,

    Je verrai ça demain, là on me met à la porte pour ce soir!

    Cordialement,

    Gérard

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Par défaut
    J'ai repris mes tests aujourd'hui, et ça marche a condition que je fasses les SET ARITHABORT .... avant chacune de mes requetes d'INSERT.
    Une seule fois après l'ouverture de la connexion, c'est pas suffisant!

    Comme ça ralenti pas trop, c'est pas grave!

    Mais c'est quand meme bizarre!

    Merci a tous de votre concours.

    Gérard.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XE7] Connexion à une base de données SQL Server via ODBC pour plate-forme cible OS X
    Par Ptite Développeuse dans le forum Bases de données
    Réponses: 7
    Dernier message: 08/01/2015, 15h23
  2. Rappel : Dates de fin de support pour SQL Server
    Par mikedavem dans le forum Actualités
    Réponses: 5
    Dernier message: 18/01/2010, 17h36
  3. Help!! Probleme avec les dates sur SQL SERVER
    Par Nadaa dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 03/08/2006, 16h55
  4. Date en SQL Server
    Par Sadneth dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 13/06/2004, 11h27

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