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 :

[rad-studio MsSql] Commande insert avec parametre


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 391
    Points : 189
    Points
    189
    Par défaut [rad-studio MsSql] Commande insert avec parametre
    Bonjour

    J'aurais besoin de votre aide pour créer une commande SQL avec insert.

    Mes besoins sont que je veux entrer dans une commande select environ 20 valeurs textes et ou chiffres lors de création d'un enregistrement ceci est pour enregistrer les données (style formulaire) dans une table. Mon problème vient que je veux copier dans des variables les données après insertion pour les enregistrer dans le formulaire suivant et corriger seulement les informations qui ont changés.

    En résumé j'ai 20 variables que je mets dans des paramètres style...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
       msquery1.Active:=FALSE;
       MSQUERY1.SQL.TEXT :='INSERT INTO FORMULAIRE.DBO.INFORMATION VALUES ( VR, CAM, DAT9,TAXE,REQ,DEP,ARR,..........)';
     
       msquery1.ParamByName('VR').AsString:=  VR ;
       msquery1.ParamByName('CAM').AsString:= CAMION ;
       msquery1.ParamByName('DAT9').AsString:= DATE9;
       msquery1.ParamByName('TAXE').AsString:= TX ;
       msquery1.ParamByName('REQ').AsString:= REQ ;
       msquery1.ParamByName('DEP').AsString:= DEPART;
       msquery1.ParamByName('ARR').AsString:= ARRIVE ;

    La suite des données sont conforme dans l'ordre des champs de la table

    Merci de votre aide

    Mario

  2. #2
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Il faut spécifier les noms des paramètres avec des ":", tu n'as pas d'identity dans ta table ?
    Je trouve plus lisible et plus sûre de spécifier les colonnes dans les insert.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO formulaire.dbo.information FORMULAIRE.DBO.INFORMATION (VR, CAM, DAT9, ...) VALUES (:vr, :cam: dat9, ...)

    Après tu lances un update global sinon il faut stocker tes champs dans un objet, dès que l'utilisateur modifie le champ tu mets un flag comme quoi il a été mis à jour, à l'enregistrement tu construis dynamiquement ton update.

  3. #3
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 391
    Points : 189
    Points
    189
    Par défaut [rad-studio MsSql] Commande insert avec parametre
    Bonjour

    Merci pour votre aide.

    Une petite question supplémentaire . Qu'elle est la quantité d'information que je peux placer dans un insert , update , select, J'ai lu que je peux aller a 4 k.
    Est-ce exact ou c'est moins.

    Bonne journée

    Mario

  4. #4
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 391
    Points : 189
    Points
    189
    Par défaut [rad-studio MsSql] Commande insert avec parametre
    Oup!

    c'est la première fois que ca arrive

    J'ai oublié de vous demander comment on écrit la commande quand on dépasse 255 caractères J'ai un message d'erreur lors de la compilation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     MSQUERY1.SQL.TEXT :='INSERT INTO formulaire.dbo.information FORMULAIRE.DBO.INFORMATION (VR, CAM, DAT9, ...) VALUES (:vr, :cam: dat9, ...)
    Merci

    Mario

  5. #5
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Pour le nombre maximum je ne sais pas, mais je dirais que cela dépend de ton champ en base. Si c'est un VARCHAR(MAX) tu peux faire ce que tu veux je pense.

    Sur les Query utilise plutôt le Append plutôt que de setter le texte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Qry.SQL.Append('INSERT INTO (...)');
    Qry.SQL.Append('VALUES(:a, :b, ...)');
    Sinon pour passer la limite il suffit de concaténer sur une deuxième ligne.

  6. #6
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 391
    Points : 189
    Points
    189
    Par défaut [rad-studio MsSql] Commande insert avec parametre
    Bonjour

    Quand vous dite
    Sinon pour passer la limite il suffit de concaténer sur une deuxième ligne.
    comment je dois faire si sur la première ligne je dépasse 255 caractères
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Qry.SQL.Append('INSERT INTO (...    plus grand que 255 car.....)');
     Qry.SQL.Append('VALUES(:a, :b, ...   plus grand que 255 car......)');

    comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Qry.SQL.Append('INSERT INTO (vr,...');
     Qry.SQL.Append('cam,dat9');
     Qry.SQL.Append('champ10,champ11');
     Qry.SQL.Append('VALUES(:a, :b, ...)'); 
     Qry.SQL.Append(':v, :y)');
    merci de votre aide

    Mario

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     MSQUERY1.SQL.TEXT := ' INSERT INTO formulaire.dbo.information FORMULAIRE.DBO.INFORMATION' 
                        + ' (VR, CAM, DAT9, '
                        + ' champ10, champ11 ...) ' 
                        + ' VALUES ' 
                        + ' (:vr, :cam: dat9, '
                        + ' :v, :y) ' ;
    Cela peut avoir un impact car certaines lib analyse le SQL à chaque ajout (pour détecter les paramètres), tout soumettre d'un coup est plus efficace

    C'est un peu le B.A.-BA : F2069 Ligne trop longue (plus de 1023 caractères) (Delphi)
    Ce message d'erreur est produit lorsque la longueur d'une ligne d'un fichier source dépasse 255 caractères.

    Vous pouvez normalement diviser la ligne longue en deux lignes plus courtes.

    Si vous avez vraiment besoin d'une constante chaîne longue, vous pouvez la scinder sur plusieurs lignes consécutives que vous concaténerez avec l'opérateur '+'.
    Avant de vous attaquer à la base de données, une lecture des bases en Delphi serait approprié : Guide Pascal et Delphi > V. Préliminaires > V-A-2. Caractères et chaînes de caractères
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  8. #8
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 391
    Points : 189
    Points
    189
    Par défaut [rad-studio MsSql] Commande insert avec parametre
    Bonjour

    Merci de votre aide.

    Ca fonctionne très biens. Votre aide est très apprécié.

    Le résultat est très rapide pour la création. Mais il me manque une information pour que l'affichage soit a jour a l'écran.

    Pour voir l'enregistrement crée je dois faire un refresh de ma table apres la création ce qui ralenti un peu. Il doit me manqué un lien entre mon datasource de mon application et le Query lors de la création de mon nouveau enregistrement.

    Si vous avez une idée pour orienté mes recherches ca m'aiderait beaucoup.

    Merci encore

    Mario

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    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 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par mario9 Voir le message
    Mais il me manque une information pour que l'affichage soit a jour a l'écran.
    Pour voir l'enregistrement crée je dois faire un refresh de ma table après la création ce qui ralenti un peu.
    Affichage qui, je présume, se situe dans une grille et le datasource lié à une requête ou table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Il doit me manquer un lien entre mon datasource de mon  application  et  le Query lors de la création de mon nouveau enregistrement.
    Non, il n' y a pas de manque, c'est "normal" considérez un DataSource comme un cliché à un instant T, votre requête (ou celle des autres en environnement multi-utilisateurs) se passant après cet instant T il faut donc rafraichir le cliché pas de secret si ce n'est que plus le contenu du datasource est petit, plus le ralentissement sera faible
    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

  10. #10
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 391
    Points : 189
    Points
    189
    Par défaut [rad-studio MsSql] Commande insert avec parametre
    Bonjour

    Merci à tous pour votre aide.


    Mario

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

Discussions similaires

  1. [rad studio-MsSql] Insert et Update dans une transaction
    Par mario9 dans le forum Bases de données
    Réponses: 5
    Dernier message: 12/07/2018, 19h29
  2. Réponses: 4
    Dernier message: 09/03/2015, 16h30
  3. [Débutant] commande INSERT avec 150 champs numerotés
    Par thierry007 dans le forum VB.NET
    Réponses: 1
    Dernier message: 30/05/2014, 18h28
  4. Réponses: 1
    Dernier message: 21/01/2010, 14h20
  5. [Runtime]Commande avec paramètre
    Par greg1602 dans le forum Général Java
    Réponses: 19
    Dernier message: 15/11/2005, 14h20

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