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

Bases de données Delphi Discussion :

Erreur de conversion de string à date


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier Avatar de the watcher
    Inscrit en
    Juillet 2003
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 356
    Points : 123
    Points
    123
    Par défaut Erreur de conversion de string à date
    La mise en place de ce code sql me permet de mettre à jour mes données dans une application. Mais cette fois-ci, il me génère des erreurs lors de la validation.
    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
    20
    21
    22
    23
    24
    procedure TFrmModifAdherent.BitBtn2Click(Sender: TObject);
    var
      s : string;
      rep : integer;
    begin
    // Question avant validation
        rep:=MessageBox(Handle,'Êtes-vous sûr de voir modifier cet Adhérent ?',
        'Confirmation', MB_OKCANCEL or MB_ICONQUESTION);
        If (rep = IDOK) then
    // Code pour enclencher la validation de modification
    // Requête de modification
     
        s:='UPDATE ADHERENTS SET NOM='''+EditNom.text+
            ''', PRENOMS = '''+EditPrenoms.text+
            ''', DTNAISS = '''+DateEdit1.Text+
            ''', LIEUNAISS = '''+Edit4.Text+ '''WHERE CODE_AP = :CODE_AP';
     
        if DataModule1.IBQAdherent.Active then DataModule1.IBQAdherent.Active:=False;
           DataModule1.IBQAdherent.SQL.Clear;
           DataModule1.IBQAdherent.SQL.Add(s);
           DataModule1.IBQAdherent.Params[0].AsString:=Label21.Caption;
           DataModule1.IBQAdherent.ExecSQL;
           DataModule1.IBTableAdherent.Refresh;
    end;
    Voici l'erreur :



    Ya t-il un autre composant à la place du composant DateEdit afin de permettre d'enregistrer la date ?
    L'important n'est pas de tout savoir mais de savoir où tout se trouve !

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 029
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    Normal , toujours préférer le passage de paramètres surtout pour les dates
    sinon sous la bonne forme (soit mm/jj/aaaa soit jj.mm.aaaa)

    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
     
      s:='UPDATE ADHERENTS SET NOM=:N'+
            ', PRENOMS =:P'+
            ', DTNAISS = :D'+
            ', LIEUNAISS =:L  WHERE CODE_AP = :CODE_AP';
     
        if DataModule1.IBQAdherent.Active then DataModule1.IBQAdherent.Active:=False;
     // inutile       DataModule1.IBQAdherent.SQL.Clear;
    // si utilisation de Text au lieu et place de Add
           DataModule1.IBQAdherent.SQL.Text:=s;
    DataModule1.IBQAdherent.ParamByName('N').AsString:=EditNom.text;
    DataModule1.IBQAdherent.ParamByName('P').AsString:=EditPreNoms.text;
    DataModule1.IBQAdherent.ParamByName('D').AsString:=DateEdit1.Date; // en supposant que dateEdit1 renvoye cette valeur ?
    DataModule1.IBQAdherent.ParamByName('L').AsString:=Edit4.Text;
    DataModule1.IBQAdherent.ParamByName('CODE_AP').AsString:=Label21.Caption;
           DataModule1.IBQAdherent.ExecSQL;
     
          DataModule1.IBTableAdherent.Refresh;
    PS . Les paramètres ne sont pas là que pour les clauses Where
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Mouai... je n'ai jamais trouvé cette notion de paramètre super intéressante.

    Dans le cas qui est posé ici j'ai surtout l'impression que ''15/12/1999" n'est pas le format attendu par ta base de données : soit les quotes sont en trop soit l'ordre est incorrect soit les '/' ne sont pas attendues soit....

    Un conseil : gère l'exception déclenchée en stockant dans un fichier la requête qui a déclenché une erreur puis soumet cette requête dans le soft d'interface de ta BDD : tu verras alors d'où vient l'erreur.

Discussions similaires

  1. conversion de la date en string
    Par shoupinou dans le forum BIRT
    Réponses: 8
    Dernier message: 06/12/2007, 08h06
  2. Erreur de conversion si date manquante
    Par Orakle dans le forum Sql Developer
    Réponses: 7
    Dernier message: 29/08/2007, 11h19
  3. Réponses: 5
    Dernier message: 21/08/2007, 11h33
  4. Probleme de conversion String -> Date avec SimpleDateFormat.parse(String)
    Par jeanlouis_lecodeur dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 02/07/2007, 09h18
  5. Erreur de conversion de type Null en String
    Par navis84 dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/07/2005, 15h25

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