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

4D Discussion :

[4D et ASP.NET] Type Date


Sujet :

4D

  1. #1
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 45
    Points : 46
    Points
    46
    Par défaut [4D et ASP.NET] Type Date
    OS: Win XP Pro SP2
    FrameWork: 1.1.4322 SP1
    SDK: VS 2003
    4D: v1999 (et pas possible de passer à une version supérieur)

    bonjour a tous,

    je veux faire un INSERT dans une base 4D avec un champs de type de DATE depuis ASP.NET. Cependant en envoyant ma requête comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO MyTable (Nom, Date) VALUES ('MyName','27/09/2006')
    J'obtient l'erreur suivante:
    ERROR [22007] [Simba][Simba ODBC Driver]Invalid date, time or timestamp value.

    Si je ne mets pas le champs Date dans mon INSERT ma requête fonctionne. Ma question est la suivante. Faut-il faire comme dans oracle, et convertir le champs en date genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO MyTable (Nom, Date) VALUES ('MyName',to_date('27/09/2006','DD/MM/YYYY HH24:MI'))
    si oui comment fait-on sous 4D ?


    Merci et bon coding a tous!!!!

    VinZ

  2. #2
    Membre habitué Avatar de Cyberbob002
    Inscrit en
    Mai 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 140
    Points : 146
    Points
    146
    Par défaut
    bonjour

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 103
    Points : 67
    Points
    67
    Par défaut
    moi j'ai le pb inverse, lorsque je vais lire un champ qui est au format DATE TIME (YYYY-MM-JJ hh-mm-ss) dans une table mySQL il ne me retourne que la date mais pas l'heure....

  4. #4
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 45
    Points : 46
    Points
    46
    Par défaut
    Et bien dans ce cas la, quand tu récupères ton champs (dans un string je suppose) essaye de lui préciser le format que tu veux genre: MonChamps.ToString("dd/MM/yyyy HH:mm")

    Mais bon ça réponds toujours pas à ma question snif snif....

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    359
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 359
    Points : 613
    Points
    613
    Par défaut
    Citation Envoyé par Turtle_fr
    moi j'ai le pb inverse, lorsque je vais lire un champ qui est au format DATE TIME (YYYY-MM-JJ hh-mm-ss) dans une table mySQL il ne me retourne que la date mais pas l'heure....
    Je n'ai pas testé mais vous utilisez la commande MySQL_GetTimeField avec les 3 paramètres de retour ?

    ...
    $SQL:="SELECT id,name,entrydate FROM test.matable"
    `bind :
    `col 0 = id
    `col 1 = name
    `col 2 = age (not in query)
    `col 3 = entrydate
    SelectID:=MySQL_Select (ConnID;$SQL)
    If (SelectID#0)
    While (0#MySQL_NextRow (SelectID))
    MySQL_GetIntegerField (SelectID;0;$id)
    MySQL_GetStringField (SelectID;1;$name)
    MySQL_GetDateField (SelectID;3;$day;$month;$year)
    MySQL_GetTimeField (SelectID;3;$hour;$minute;$second) ` <====
    End while
    MySQL_CloseSelect (SelectID)
    Else
    ALERT(MySQL_ErrorString (ConnID))
    End if
    ...
    --Steph4D

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    359
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 359
    Points : 613
    Points
    613
    Par défaut
    Citation Envoyé par vinz81
    si oui comment fait-on sous 4D ?
    Je cherche...
    --Steph4D

  7. #7
    Membre confirmé

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    359
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 359
    Points : 613
    Points
    613
    Par défaut
    J'avais répondu (sous le profil d'un collègue) à une question similaire ici :

    http://www.developpez.net/forums/sho...13&postcount=8
    --Steph4D

  8. #8
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 45
    Points : 46
    Points
    46
    Par défaut
    Je suis déjà tombé sur ce poste, et j'ai essayé de cette manière (c'est à dire mettre ma date entre guillemets comme si c'était un string) mais ça marche pas...

    l'instruction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT into MyTable (Nom, Date) VALUES ('MyName', '29/09/2006')
    ne fonctionne pas. j'obtiens l'erreur suivante:ERROR [22007] [Simba][Simba ODBC Driver]Invalid date, time or timestamp value.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT into MyTable (Nom, Date) VALUES ('MyName', '29-09-2006')
    ne fonctionne pas non plus j'obtient la même erreur.

    Je ne sais plus quoi faire...

    Merci à tous

  9. #9
    Membre confirmé

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    359
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 359
    Points : 613
    Points
    613
    Par défaut
    Dans l'autre post, j'écris que je remplis le champ date au format yyyy-mm-dd (2006-05-16). Si j'entre un format dd-mm-yyyy, j'ai une erreur de format.

    Essayez de passer ('MyName', '2006-29-09').

    Je testerai dès retour au bureau lundi (je suis chez moi là).
    --Steph4D

  10. #10
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 45
    Points : 46
    Points
    46
    Par défaut
    décolé j'avais pas vu le yyyy-mm-dd...
    J'essayerai ça lundi au bureau

    Bon Week end!!!

  11. #11
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 81
    Points : 86
    Points
    86
    Par défaut
    Personellement j'ai essayé de faire cela depuis java et j'avais a chaque fois la même erreur quelle que soit la syntaxe de la date que je lui passait.

    to_date(...) ne fonctionnais pas
    '12.12.2006' ne fonctionnait pas
    '12/12/2006' ne fonctionnait pas
    '2006-12-12' ne fonctionnait pas

    En fait, le seul formal qu'il m'a accepté est :

    Insert into table(nom, date) values('Poulpe', '12 décembre 2006') ou
    Insert into table(nom, date) values('Poulpe', '12 dec 2006')

    C'est avec le driver jdbc et non odbc que je l'ai fait, mais c'est surement la même chose. Si tu continue sur cette voie tu verra vite que passer des requêtes SQL a 4D est un enfer. En plus de la moitié de la syntaxe qu'il ne comprend pas, c'est d'une lenteur effarante En tout cas depuis java

  12. #12
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 45
    Points : 46
    Points
    46
    Par défaut
    Bon j'ai essayé ça tout de suite et c'est bon ça marche.

    Maintenant il ne me reste plus qu'un seul petit soucis...(oui je sais je suis exigeant vous allez dire... ) mais maintenant ce sont les boolean qui m'ennuient

    Si je fais:

    INSERT INTO MYTABLE ('Name','Type') VALUES ('MyName','true') ---> Error in assignment
    INSERT INTO MYTABLE ('Name','Type') VALUES ('MyName',true)---> Erreur de syntaxe
    INSERT INTO MYTABLE ('Name','Type') VALUES ('MyName',0)---> Mon champs se met a 1 alors que je lui passe 0
    INSERT INTO MYTABLE ('Name','Type') VALUES ('MyName','0')---> Même chose

  13. #13
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 81
    Points : 86
    Points
    86
    Par défaut
    Citation Envoyé par vinz81
    INSERT INTO MYTABLE ('Name','Type') VALUES ('MyName',0)---> Mon champs se met a 1 alors que je lui passe 0
    Hummm.. j'ai pas comprit le soucis Si tu met 0 dans ta requete il met true dans le champs dans la DB ?

  14. #14
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 45
    Points : 46
    Points
    46
    Par défaut
    et bien en faite dans ma table quand je visualise mes champs Boolean après avoir fait mon insert, ils sont tous a 1 (donc true) alors que moi dans l'insert je lui passe 0 ou '0' càd un false.

  15. #15
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 81
    Points : 86
    Points
    86
    Par défaut
    Alors la Hummmm.... je ne sais trop pourquoi je peux essayer de faire quelques tests .. mais cela ne sera pas avant demain

  16. #16
    Membre confirmé

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    359
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 359
    Points : 613
    Points
    613
    Par défaut
    J'ai testé le même formulaire web déjà utilisé dans la question ASP précédente. j'ai ajouté un champ booléen MaJ (variable fMaJ dans la page ASP) :

    Formatage de la checkbox du formulaire web :

    if fMaj= "on" then
    fMaj="1"
    else
    fMaj="0"
    end if

    Requête SQL envoyée :

    RequeteSQL = "Insert Into TABLE_1 (ID,Nom,DateCreation,HeureCreation,MaJ) Values (" & fID & ",'" & fNom & "','" & fDate & "','" & fHeure & "','" & fMaj & "')"

    Tout roule

    Sinon, testé aussi l'envoi de la requête en dur :

    RequeteSQL = "Insert Into TABLE_1 (ID,Nom,DateCreation,HeureCreation,MaJ) Values (11,'pierre','2006-10-02','17:57:59',1)"

    Aucun souci.
    checkbox cochée ou 1 envoyé => checkbox 4D cochée
    checkbox décochée ou 0 envoyé => checkbox 4D non cochée
    --Steph4D

  17. #17
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 81
    Points : 86
    Points
    86
    Par défaut
    Ben sur ce coup la j'ai pas d'idée. Je viens de faire le test chez moi :

    stmt.executeUpdate("Insert into Groupe(id, nom, active) values ( 1, 'true', 1)");
    stmt.executeUpdate("Insert into Groupe(id, nom, active) values ( 1, 'false', 0)");

    Au final il me crée 2 enregistrements 1 coché et 1 non coché. Donc de mon coté via jdbc c'est correct

    Edit : les noms true et false dans ma requete sont pas pour des booleans mais pour des alphanumeric. le champs boolean c'est "active"

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 103
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par hy00ga
    Si tu continue sur cette voie tu verra vite que passer des requêtes SQL a 4D est un enfer. En plus de la moitié de la syntaxe qu'il ne comprend pas, c'est d'une lenteur effarante En tout cas depuis java
    ta remarque m'intéresse beaucoup puisque je suis en train de me mettre au dev entre 4D et mySQL avec le plug-in 4DforMYSQL....

    Quelle technique utilises-tu pour communiquer entre 4D et une base SQL ?

    Merci de ta réponse

  19. #19
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 81
    Points : 86
    Points
    86
    Par défaut
    Ahhh si j'avais la réponse Moi ce que j'essaye de faire c'est d'acceder a 4D depuis un programme java. Ca fait 2 semaine que je suis dessus 8 heures par jour et je n'ai pas encore trouvé de solution satisfaisante.

    1) Le SQL comprit par 4D est un sous ensemble du SQL qui comporte certaines limitations trèèèès embetante. De plus j'ai des temps d'attente énormes ( 6 secondes pour 3 petites requetes simples) ce qui rend l'acces via jdbc inutilisable.

    2) L'utilisation de 4D open for java semblais plus rapide. Mais la manière dont est codé cette librairie est une hérésie . Les conventions de codages ne sont pas respectés, la doc est mal faite. En plus pour créer un enregistrement il faut utiliser CreateMethode qui est Deprecated remplacé par une autre méthode qui n'est pas documentée impossible a utiliser.

    Au Final je pense que je vais créer des methodes dans 4D et que je vais les appeler via le serveur Web. Ca sera moche, 100% non portable par rapport à ma solution initiale... mais si c'est la seule solution ...

    Mais peut être est-ce seulement dans ma situation que tout ces problèmes se posent et que pour l'utilisation que tu veux en faire tu n'aura pas de problèmes

    Edit : quand je me relis cela semble très négatif Je ne critique pas 4D qu'on se mette d'accord, je ne le connais pas encore assez pour me prononcer. Mais dans le cadre de ce que je veux faire acuellement, je me rend compte que ca pose pas mal de problèmes

  20. #20
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 45
    Points : 46
    Points
    46
    Par défaut

    Requête SQL envoyée :

    RequeteSQL = "Insert Into TABLE_1 (ID,Nom,DateCreation,HeureCreation,MaJ) Values (" & fID & ",'" & fNom & "','" & fDate & "','" & fHeure & "','" & fMaj & "')"

    Tout roule

    Sinon, testé aussi l'envoi de la requête en dur :

    RequeteSQL = "Insert Into TABLE_1 (ID,Nom,DateCreation,HeureCreation,MaJ) Values (11,'pierre','2006-10-02','17:57:59',1)"

    Aucun souci.
    checkbox cochée ou 1 envoyé => checkbox 4D cochée
    checkbox décochée ou 0 envoyé => checkbox 4D non cochée

    Je viens de réessayer pour être sure de ce que j'avance, et en faite c'est bien ce que je disais...

    Dans tous les cas que je passe 0 ou '0' mon champs boolean se met à 1... c'est proprement halucinant... je comprends pas pourquoi.

    j'ai essayé de balancer mon insert dans MS Query histoire d'être sure que ça vient pas d'ASP et il se passe exactement la même chose... je suis désespéré

    Voila ma requête au cas ou...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO TEMP_HEURES(SemEtMatricule,CodeNature,CodeImputation,date,Nuit,voyage,nbreHeures,SectionSalarié,Matricule,NumSemaine,type_jour,nbresHeuresCorrigées)VALUES('200638434','910','110','2006-09-18',0,0,1,'800','434','200638',1,7.1)

    Bon coding a tous

    ++

    VinZ

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [C# et Asp.net] conversion date
    Par misscricri dans le forum ASP.NET
    Réponses: 1
    Dernier message: 14/03/2007, 18h19
  2. [VB.net 2005] convertir chaine de caractère en type 'date'
    Par kinganasius dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/07/2006, 23h14
  3. [VB.Net/Dataview] Comment gérer un filtre sur une colonne de type date ?
    Par silatchom dans le forum Accès aux données
    Réponses: 3
    Dernier message: 07/07/2006, 19h28
  4. Réponses: 5
    Dernier message: 30/06/2006, 12h22
  5. [VB.Net] cast du type 'DataRowview' en type 'Date' non valide
    Par badnane2 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 14/06/2006, 15h50

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