Execution de 2 commandes sql simultanément

romanikou -  
 romanikou -
salut à tous, (APIwin32 visualc++)
voila mon problème, comme on peut le voir ci dessous, je récupère des paramètres que j'ai au préalable rentré dans des EditBox pour les enregistrer dans ma table Cycles, cependant j'aimerais au même moment créé une nouvelle colonne dans une autre table (cf. en rouge)
le problème étant que si je met cette commande à la suite de l'autre, seule celle ci est réalisée (et vis versa si je la place avant).
Merci rom

case IDC_BTNVALIDE:

///////////////////////////////////////////////////////////////////////////////////////////

// On verifie qu'il y a au moins un cycle

GetWindowText(GetDlgItem(hwndDlg, IDC_EDTCYCLE), szBuffer, TAILLE_BUFFER);

if(lstrcmp(szBuffer, "")==0)

{

MessageBox(hwndDlg, "Il faut saisir au moins un Cycle.", "Erreur Saisie", MB_OK);

SetFocus(GetDlgItem(hwndDlg, IDC_EDTCYCLE));

break;

}

///////////////////////////////////////////////////////////////////////////////////////////

// On recupere les données

CHAR szCycle[TAILLE_BUFFER], szType[TAILLE_BUFFER];

lstrcpy(szCycle, szBuffer);

GetWindowText(GetDlgItem(hwndDlg, IDC_EDTTYPE), szType, TAILLE_BUFFER);

wsprintf(szBuffer, "INSERT INTO Cycles(Cycle, Type) VALUES ('%s', '%s')", szCycle, szType);

wsprintf(szBuffer, "ALTER TABLE RecupParam ADD %s CHAR(10)",szCycle);

///////////////////////////////////////////////////////////////////////////////////////////

// ouveture du recordset

try

{

///////////////////////////////////////////////////////////////////////////////////////////

// fermeture du recordset s'il est ouvert

if(pRs->State != adStateClosed)

pRs->Close();

///////////////////////////////////////////////////////////////////////////////////////////

// On Execute la requete

pRs->Open(szBuffer, _variant_t((IDispatch *) pConn, true), adOpenDynamic, adLockReadOnly, adCmdText);

}

catch(_com_error &e)

{

MessageBox(hwndDlg, e.Description(), "Erreur ExecuteRequete.", MB_ICONEXCLAMATION);

}

///////////////////////////////////////////////////////////////////////////////////////////

// On remplit la liste Cycle

wsprintf(szBuffer, "SELECT * FROM Cycles ORDER BY Cycle, Type");

RempliListeCycle(GetParent(hwndDlg), szBuffer);

SetWindowText(GetDlgItem(GetParent(hwndDlg), IDC_LBLCYCLE), szCycle);

SetWindowText(GetDlgItem(GetParent(hwndDlg), IDC_LBLTYPE), szType);

///////////////////////////////////////////////////////////////////////////////////////////

// On relance la boite de dialogue

SendMessage(hwndDlg, WM_NEXTDLGCTL, 0, 0);

SetWindowText(GetDlgItem(hwndDlg, IDC_EDTTYPE), "");

SetWindowText(GetDlgItem(hwndDlg, IDC_EDTCYCLE), "");

break;
A voir également:

1 réponse

romanikou
 
en fait il s'agissait de mettre 2 commandes sql à la suite et qu'elles se réalisent toutes les deux, or ce qu'il se passe, c'est que seulement la deuxième se réalise. mais c'est bon, le problème est résolu, il fallait répéter ce bout de code concernant le recordset avant chaque commandes sql.
///////////////////////////////////////////// 
// ouveture du recordset 

try 

{ 

//////////////////////////////////////////////////////
// fermeture du recordset s'il est ouvert 

if(pRs->State != adStateClosed) 

pRs->Close(); 

//////////////////////////////////////////////////////
// On Execute la requete 

pRs->Open(szBuffer, _variant_t((IDispatch *) pConn, true), adOpenDynamic, adLockReadOnly, adCmdText); 

} 

catch(_com_error &e) 

{ 

MessageBox(hwndDlg, e.Description(), "Erreur ExecuteRequete.", MB_ICONEXCLAMATION); 

} 


voilà, merci et bonne journée
0