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]