Execution de 2 commandes sql simultanément
romanikou
-
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;
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:
- Execution de 2 commandes sql simultanément
- Invite de commandes - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
- Commandes terminal mac - Guide
- 2 ecran pc - Guide
- Gta 6 trailer 2 - Guide
1 réponse
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.
voilà, merci et bonne journée
/////////////////////////////////////////////
// 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