|
Probleme avec une requete SQL |
Iniciado por Pierre O., ago., 20 2004 12:15 AM - 3 respostas |
| |
| | | |
|
| |
Publicado em agosto, 20 2004 - 12:15 AM |
Experts Webdev, c'est l'heure de vous exprimer !
J'ai une requete qui fonctionne parfaitement dans l'analyseur de requete SQL serveur.
Dans Webdev, j'ai l'erreur suivante :
Erreur d'initialisation de la requete Erreur de l'accès OLE DB Numéro d'erreur = 170129
Echec de l'ouverture du fichier.
Détail de l'erreur systeme : Description = Multi-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done. Source = Microsoft OLE DB Provider for SQL Server Error number = -2147217887
Voici la requete en question ( elle fonctionne bie directement dans SQL )
SELECT DETCMD.DETCMD_REF, Right([pro_date], AS [date prod], COMMANDE.CMD_NO, DETCMD.DETCMD_QTEORD, DETCMD.DETCMD_DATELIV, Right(CHARGE_DATE, AS [date charge], DETCMD.PRD_NO, DETCMD.DETCMD_SEQ, COMMANDE.CMD_COMMENT1, COMMANDE.CMD_COMMENT2, CUSTOMER.CST_NOM FROM ((WOTRANSIT RIGHT JOIN ((PRODUCTION RIGHT JOIN (STOCK INNER JOIN (DETCMD INNER JOIN WO ON (DETCMD.PRD_NO = WO.PRD_NO) AND (DETCMD.DETCMD_REF = WO.DETCMD_REF)) ON STOCK.DETCMD_REF = WO.DETCMD_REF) ON PRODUCTION.STOCK_FROMREF = STOCK.STOCK_REF)
INNER JOIN COMMANDE ON DETCMD.CMD_NO = COMMANDE.CMD_NO) ON WOTRANSIT.WO_REF = WO.WO_REF) LEFT JOIN CHARGE ON WOTRANSIT.CHARGE_REF = CHARGE.CHARGE_REF) INNER JOIN CUSTOMER ON COMMANDE.CST_NO = CUSTOMER.CST_NO WHERE (((DETCMD.DETCMD_COMPLETE)=0) AND ((COMMANDE.CST_NO)={param1}) AND ((WO.WO_FROMDET)=-1)) GROUP BY DETCMD.DETCMD_REF, Right([pro_date],, COMMANDE.CMD_NO, DETCMD.DETCMD_QTEORD, DETCMD.DETCMD_DATELIV, Right(CHARGE_DATE,, DETCMD.PRD_NO, DETCMD.DETCMD_SEQ, COMMANDE.CMD_COMMENT1, COMMANDE.CMD_COMMENT2, CUSTOMER.CST_NOM HAVING (((Right([pro_date],) Is Not Null)) ORDER BY COMMANDE.CMD_NO
Merci de votre aide précieuse
Pierre O. |
| |
| |
| | | |
|
| | |
| |
Publicado em agosto, 20 2004 - 10:24 AM |
Salut, il faut que tu exécute cette requête par la commande HExécuteRequête() avec le paramètre hRequêtesanscorrection.
Antoine
"Pierre O." <pierreo@fenplast.com> wrote:
Experts Webdev, c'est l'heure de vous exprimer !
J'ai une requete qui fonctionne parfaitement dans l'analyseur de requete SQL serveur.
Dans Webdev, j'ai l'erreur suivante :
Erreur d'initialisation de la requete Erreur de l'accès OLE DB Numéro d'erreur = 170129
Echec de l'ouverture du fichier.
Détail de l'erreur systeme : Description = Multi-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done. Source = Microsoft OLE DB Provider for SQL Server Error number = -2147217887
Voici la requete en question ( elle fonctionne bie directement dans SQL
)
SELECT DETCMD.DETCMD_REF, Right([pro_date], AS [date prod], COMMANDE.CMD_NO, DETCMD.DETCMD_QTEORD, DETCMD.DETCMD_DATELIV, Right(CHARGE_DATE, AS [date charge], DETCMD.PRD_NO, DETCMD.DETCMD_SEQ, COMMANDE.CMD_COMMENT1, COMMANDE.CMD_COMMENT2, CUSTOMER.CST_NOM FROM ((WOTRANSIT RIGHT JOIN ((PRODUCTION RIGHT JOIN (STOCK INNER JOIN (DETCMD INNER JOIN WO ON (DETCMD.PRD_NO = WO.PRD_NO) AND (DETCMD.DETCMD_REF = WO.DETCMD_REF))
ON STOCK.DETCMD_REF = WO.DETCMD_REF) ON PRODUCTION.STOCK_FROMREF = STOCK.STOCK_REF) INNER JOIN COMMANDE ON DETCMD.CMD_NO = COMMANDE.CMD_NO) ON WOTRANSIT.WO_REF = WO.WO_REF) LEFT JOIN CHARGE ON WOTRANSIT.CHARGE_REF = CHARGE.CHARGE_REF) INNER JOIN CUSTOMER ON COMMANDE.CST_NO = CUSTOMER.CST_NO WHERE (((DETCMD.DETCMD_COMPLETE)=0) AND ((COMMANDE.CST_NO)={param1}) AND ((WO.WO_FROMDET)=-1)) GROUP BY DETCMD.DETCMD_REF, Right([pro_date], , COMMANDE.CMD_NO, DETCMD.DETCMD_QTEORD, DETCMD.DETCMD_DATELIV, Right(CHARGE_DATE, , DETCMD.PRD_NO, DETCMD.DETCMD_SEQ, COMMANDE.CMD_COMMENT1, COMMANDE.CMD_COMMENT2, CUSTOMER.CST_NOM HAVING (((Right([pro_date], ) Is Not Null)) ORDER BY COMMANDE.CMD_NO Merci de votre aide précieuse Pierre O. |
| |
| |
| | | |
|
| | |
| |
Publicado em agosto, 20 2004 - 4:46 PM |
Merci pour la réponse.
Je n'ai pas le choix de toute facon d'utiliser le parametre hRequêtesanscorrection sinon Webdev ne me permet pas de l'exécuter car il tente d'interpréter la requete. Comme la requete contient des ordres spécifiques au langage SQL, je doit absolument utiliser hRequêtesanscorrection.
L'erreur se produit un peu plus loin, probablement dans le moteur "Microsoft OLE DB Provider for SQL Server" tel que le message d'erreur le mentionne.
C'est que le message d'erreur n'est pas très clair :
Description = Multi-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done. Source = Microsoft OLE DB Provider for SQL Server Error number = -2147217887
Ca veut dire quoi ce message ?
"Antoine" <antoine.info.dev@free.fr> wrote:
Salut, il faut que tu exécute cette requête par la commande HExécuteRequête() avec le paramètre hRequêtesanscorrection. Antoine "Pierre O." <pierreo@fenplast.com> wrote:
Experts Webdev, c'est l'heure de vous exprimer !
J'ai une requete qui fonctionne parfaitement dans l'analyseur de requete SQL serveur.
Dans Webdev, j'ai l'erreur suivante :
Erreur d'initialisation de la requete Erreur de l'accès OLE DB Numéro d'erreur = 170129
Echec de l'ouverture du fichier.
Détail de l'erreur systeme : Description = Multi-step OLE DB operation generated errors. Check each
OLE
DB status value, if available. No work was done. Source = Microsoft OLE DB Provider for SQL Server Error number = -2147217887
Voici la requete en question ( elle fonctionne bie directement dans SQL ) SELECT DETCMD.DETCMD_REF, Right([pro_date], AS [date prod], COMMANDE.CMD_NO, DETCMD.DETCMD_QTEORD, DETCMD.DETCMD_DATELIV, Right(CHARGE_DATE, AS [date charge], DETCMD.PRD_NO, DETCMD.DETCMD_SEQ, COMMANDE.CMD_COMMENT1, COMMANDE.CMD_COMMENT2, CUSTOMER.CST_NOM FROM ((WOTRANSIT RIGHT JOIN ((PRODUCTION RIGHT JOIN (STOCK INNER JOIN (DETCMD INNER JOIN WO ON (DETCMD.PRD_NO = WO.PRD_NO) AND (DETCMD.DETCMD_REF = WO.DETCMD_REF)) ON STOCK.DETCMD_REF = WO.DETCMD_REF) ON PRODUCTION.STOCK_FROMREF = STOCK.STOCK_REF) INNER JOIN COMMANDE ON DETCMD.CMD_NO = COMMANDE.CMD_NO) ON WOTRANSIT.WO_REF = WO.WO_REF) LEFT JOIN CHARGE ON WOTRANSIT.CHARGE_REF = CHARGE.CHARGE_REF) INNER JOIN CUSTOMER ON COMMANDE.CST_NO = CUSTOMER.CST_NO WHERE (((DETCMD.DETCMD_COMPLETE)=0) AND ((COMMANDE.CST_NO)={param1}) AND ((WO.WO_FROMDET)=-1)) GROUP BY DETCMD.DETCMD_REF, Right([pro_date], , COMMANDE.CMD_NO, DETCMD.DETCMD_QTEORD, DETCMD.DETCMD_DATELIV, Right(CHARGE_DATE, , DETCMD.PRD_NO, DETCMD.DETCMD_SEQ, COMMANDE.CMD_COMMENT1, COMMANDE.CMD_COMMENT2, CUSTOMER.CST_NOM HAVING (((Right([pro_date], ) Is Not Null)) ORDER BY COMMANDE.CMD_NO Merci de votre aide précieuse Pierre O. |
| |
| |
| | | |
|
| | |
| |
Publicado em agosto, 20 2004 - 7:52 PM |
Pour ceux que ca intéresse,
J'ai finalement réussi a contourner le problème en utilisant une connection par MSDASQL (Accès ODBC par OLEDB) plutot que par SQLOLEDB (Microsoft OLE DB Provider for SQL Server)
Bien que je n'aime pas utiliser ODBC (configuration supplémentaire), il s'avère que mon problème à été résolu de cette facon.
Si quelqu'un est en mesure de m'expliquer pourquoi ca fonctionne de cette facon(MSDASQL) et non de l'autre(SQLOLEDB), ce serait grandement apprécié.
J'espère que mon problème en aidera d'autres
Merci
Pierre O.
"Pierre O." <pierreo@fenplast.com> wrote:
Experts Webdev, c'est l'heure de vous exprimer !
J'ai une requete qui fonctionne parfaitement dans l'analyseur de requete SQL serveur.
Dans Webdev, j'ai l'erreur suivante :
Erreur d'initialisation de la requete Erreur de l'accès OLE DB Numéro d'erreur = 170129
Echec de l'ouverture du fichier.
Détail de l'erreur systeme : Description = Multi-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done. Source = Microsoft OLE DB Provider for SQL Server Error number = -2147217887
Voici la requete en question ( elle fonctionne bie directement dans SQL
)
SELECT DETCMD.DETCMD_REF, Right([pro_date], AS [date prod], COMMANDE.CMD_NO, DETCMD.DETCMD_QTEORD, DETCMD.DETCMD_DATELIV, Right(CHARGE_DATE, AS [date charge], DETCMD.PRD_NO, DETCMD.DETCMD_SEQ, COMMANDE.CMD_COMMENT1, COMMANDE.CMD_COMMENT2, CUSTOMER.CST_NOM FROM ((WOTRANSIT RIGHT JOIN ((PRODUCTION RIGHT JOIN (STOCK INNER JOIN (DETCMD INNER JOIN WO ON (DETCMD.PRD_NO = WO.PRD_NO) AND (DETCMD.DETCMD_REF = WO.DETCMD_REF))
ON STOCK.DETCMD_REF = WO.DETCMD_REF) ON PRODUCTION.STOCK_FROMREF = STOCK.STOCK_REF) INNER JOIN COMMANDE ON DETCMD.CMD_NO = COMMANDE.CMD_NO) ON WOTRANSIT.WO_REF = WO.WO_REF) LEFT JOIN CHARGE ON WOTRANSIT.CHARGE_REF = CHARGE.CHARGE_REF) INNER JOIN CUSTOMER ON COMMANDE.CST_NO = CUSTOMER.CST_NO WHERE (((DETCMD.DETCMD_COMPLETE)=0) AND ((COMMANDE.CST_NO)={param1}) AND ((WO.WO_FROMDET)=-1)) GROUP BY DETCMD.DETCMD_REF, Right([pro_date], , COMMANDE.CMD_NO, DETCMD.DETCMD_QTEORD, DETCMD.DETCMD_DATELIV, Right(CHARGE_DATE, , DETCMD.PRD_NO, DETCMD.DETCMD_SEQ, COMMANDE.CMD_COMMENT1, COMMANDE.CMD_COMMENT2, CUSTOMER.CST_NOM HAVING (((Right([pro_date], ) Is Not Null)) ORDER BY COMMANDE.CMD_NO Merci de votre aide précieuse Pierre O. |
| |
| |
| | | |
|
| | | | |
| | |
|