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

MFC Discussion :

problème avec INSERT INTO et nombres de paramètres


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 12
    Points : 8
    Points
    8
    Par défaut problème avec INSERT INTO et nombres de paramètres
    bonjour tout le monde, voilà ce qui me pose pas mal de problème depuis un bout de temps.
    je travaille sous visualc++ (API win32), et je dois créer une base de données, dans laquelle certaines tables ont plus de 100 champs (je sais je pourrais faire des relations entre différentes tables mais mon tuteur ne veut qu'une seule table où tout apparait, au cas où il irait voir dans access). En fait, au lancement de mon appli, je récupère le contenu de plusieurs EditBox pour l'insérer dans plusieurs cellules de ma table, ça je sais faire ou du moins jusqu'à un certain nombre de paramètres.
    voici l'exemple:

    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
     
    CHAR szParam1[TAILLE_BUFFER], szParam2[TAILLE_BUFFER],……….
     
    lstrcpy(szParam1, szBuffer);
     
    GetWindowText(GetDlgItem(hwndDlg, IDC_EDITLIGNE2), szParam2, TAILLE_BUFFER);
     
    Etc…….
     
     
     
    if(strcmp(szParam1, "SPB_150_2_AL")==0) 
     
    {
                //SPB_150_2_AL est le nom de ma table
     
     
                wsprintf(szBuffer, "INSERT INTO SPB_150_2_AL
     
    (Reference_programme, Numero_OF,Numero_tache, Surface_usinee, Reference_individuelle_piece, Cycle_de_taillage, SENS_MOLETTE, VITESSE_MOLETTE, VITESSE_TAILLAGE_FORMATION, VITESSE_TAILLAGE_EBAUCHE, VITESSE_TAILLAGE_FINITION, VITESSE_MEULE_FORMATION, VITESSE_MEULE_DIAMANTAGE, PRISE_PASSE_FORMATION_X, PRISE_PASSE_EBAUCHE_X, PRISE_PASSE_FINITION_X, PRISE_PASSE_FORMATION_Z, PRISE_PASSE_EBAUCHE_Z, PRISE_PASSE_FINITION_Z, PROFONDEUR_FORMATION, NB_PASSE_DIAMANTAGE) VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')",szParam1, szParam2, szParam3, szParam4, szParam5, szParam6, szParam7, szParam8, szParam9, szParam10, szParam11, szParam12, szParam13, szParam14, szParam15, szParam16, szParam17, szParam18, szParam19, szParam20, szParam21);
     
    }
    Comme vous pouvez le voir j'ai déjà un grand nombre de paramètres mais jusque là ca marche, par contre si j'en rajoute un (et j'en ai encore au moins 60), message d'erreur pendant l'exécution "erreur de syntaxe dans INSERT INTO" (et pourtant mon appli se lance qd même)!!
    je suis bien emmerdé avec ça.
    Alors j'avais pensé refaire un "wsprintf(szBuffer, "INSERT INTO dans la même table mais cette fois ci dans les colonnes suivantes:





    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    if(strcmp(szParam1, "SPB_150_2_AL")==0) 
     
    {
                //SPB_150_2_AL est le nom de ma table
     
     
                wsprintf(szBuffer, "INSERT INTO SPB_150_2_AL
     
    (Reference_programme,Numero_OF,.............) VALUES ('%s','%s',..........)",szParam1,szParam2,..........);
     
    }   
     
              try 
     
              {
     
              if(pRs->State != adStateClosed)
     
                pRs->Close();       
     
                pRs->Open(szBuffer, _variant_t((IDispatch *) pConn, true), adOpenDynamic, adLockReadOnly, adCmdText);
     
              }
     
              catch(_com_error &e) 
     
              {
     
                MessageBox(hwndDlg, e.Description(), "Erreur ExecuteRequete.", MB_ICONEXCLAMATION);
     
              }
     
     
    if(strcmp(szParam1, "SPB_150_2_AL")==0) 
     
    {
                //SPB_150_2_AL est le nom de ma table
     
     
                wsprintf(szBuffer, "INSERT INTO SPB_150_2_AL
     
    (Cycle_d_usinage,SURFACE,POSITION,.............) VALUES ('%s','%s','%s'..........)",szParam22,szParam23,szParam24,..........);
     
    }   
     
              try 
     
              {
     
              if(pRs->State != adStateClosed)
     
                pRs->Close();       
     
                pRs->Open(szBuffer, _variant_t((IDispatch *) pConn, true), adOpenDynamic, adLockReadOnly, adCmdText);
     
              }
     
              catch(_com_error &e) 
     
              {
     
                MessageBox(hwndDlg, e.Description(), "Erreur ExecuteRequete.", MB_ICONEXCLAMATION);
     
              }
    Mais le problème maintenant c'est que les paramètres de ma deuxième requête sont enregistrés dans ma table mais à la ligne suivante (embêtant lorsque je veux l'afficher dans une liste), alors que je voudrais que tout soit sur la même ligne d'enregistrement.
    Comment je peux faire?
    Si quelqu'un a déjà rencontré ce problème, ca me serait vraiment trés utile,
    merci bcp romy
    [Pense a mettre la balise de code ,Merci Farscape]

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    quelle horeur ce code ,
    il serait quand meme plus judicieux d'utiliser un vector pour stocker les differents champs de la table.
    de constituer la requete avec une boucle dans une string ,pour eviter les debordements memoires .et avoir un code lisible ...
    en fait tout revoir ..


  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    vector pour moi est totalement inconnu, je suis débutant depuis 2 mois, tu n'aurais pas un exemple pour voir à quoi ca ressemble, elle est peut être là la solution,
    merci pour ta critique

  4. #4
    Membre habitué Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Points : 197
    Points
    197
    Par défaut
    mon tuteur ne veut qu'une seule table où tout apparait, au cas où il irait voir dans access
    Argument à 2 balles : tu fais une vue qui affiche toutes les données dont il a besoin, avec les jointures adéquates.
    A toi de lui montrer que le résultat est le même, qu'en prime il aura une base de données structurée correctement et pas un tas de fumier.
    Les orteils servent à trouver les pieds de chaise et les montants de porte quand il fait noir.

Discussions similaires

  1. Problème avec INSERT INTO et nombre réel
    Par minooo dans le forum JDBC
    Réponses: 4
    Dernier message: 09/09/2011, 14h10
  2. problème avec insert into
    Par ulysse031 dans le forum JDBC
    Réponses: 14
    Dernier message: 04/05/2007, 20h01
  3. problème avec insert into
    Par ulysse031 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 29/04/2007, 15h40
  4. Problème avec INSERT INTO
    Par Armaklan dans le forum Oracle
    Réponses: 3
    Dernier message: 28/02/2007, 11h15
  5. Réponses: 12
    Dernier message: 25/11/2005, 12h29

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