Erreur tentative de lecture ou d'écriture de mémoire partagée

Ptitdos18 Messages postés 2 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 4 mai 2007 - 3 mai 2007 à 08:46
Ptitdos18 Messages postés 2 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 4 mai 2007 - 4 mai 2007 à 08:22
Bonjour à tous,

Je poste ce message car j'ai énormément besoin d'aide. Lorsque j'éxecute une requête et que je veux remplir un dataset, j'ai le message suivant :

"Tentative de lecture ou d'écriture de mémoire partagée. Cela indique souvent qu'une autre mémoire est endommagée."

A savoir que je lance la requête suivante :
"SELECT F_ECRITUREC.CG_NUM, sum(F_ECRITUREC.EC_MONTANT) as MONTANT, F_ECRITUREC.TA_CODE, F_ECRITUREC.JO_NUM, F_ECRITUREC.EC_PIECE, F_TAXE.TA_TAUX from F_JOURNAUX,F_ECRITUREC, F_TAXE where F_ECRITUREC.TA_CODE=F_TAXE.TA_CODE and F_ECRITUREC.JO_NUM=F_JOURNAUX.JO_NUM and (left(F_ECRITUREC.CG_NUM,2) between '60' and '69' or left(F_ECRITUREC.CG_NUM,2) between '70' and '79' or left(F_ECRITUREC.CG_NUM,2)='44') and F_JOURNAUX.JO_TYPE in (0,1,2) and (ec_jour + JM_date - 1) between '{d "

& Format(
CDate(datefrom),
"yyyy-MM-dd") &
"}' and '{d " & Format(
CDate(dateto),
"yyyy-MM-dd") &
"}' group by F_ECRITUREC.CG_NUM, F_ECRITUREC.TA_CODE, F_ECRITUREC.JO_NUM, F_ECRITUREC.EC_PIECE, F_TAXE.TA_TAUX order by EC_PIECE"

Je sais que cette requête fonctionne pour l'avoir testée sur une base SQL directement dans l'analyseur de requête.

Je passe en fait par un driver ODBC propriétaire pour attaquer une base de données propriétaire.

Mon code bloque sur la ligne suivante :
ODataAdapter.Fill(ODataSet,

"ECRITURES")

Le StackTrace renvoit ceci :
à System.Data.Common.UnsafeNativeMethods.SQLFreeHandle(SQL_HANDLE HandleType, IntPtr StatementHandle) à System.Data.Odbc.OdbcHandle.ReleaseHandle() à System.Runtime.InteropServices.SafeHandle.InternalDispose() à System.Runtime.InteropServices.SafeHandle.Dispose(Boolean disposing) à System.Runtime.InteropServices.SafeHandle.Dispose() à System.Data.Odbc.CMDWrapper.DisposeStatementHandle() à System.Data.Odbc.CMDWrapper.Dispose() à System.Data.Odbc.OdbcCommand.CloseCommandWrapper() à System.Data.Odbc.OdbcCommand.CloseFromConnection() à System.Data.Odbc.OdbcReferenceCollection.NotifyItem(Int32 message, Int32 tag, Object value) à System.Data.ProviderBase.DbReferenceCollection.Notify(Int32 message) à System.Data.Odbc.OdbcConnectionOpen.Deactivate() à System.Data.ProviderBase.DbConnectionInternal.CloseConnection(DbConnection owningObject, DbConnectionFactory connectionFactory) à System.Data.Odbc.OdbcConnection.Close() à System.Data.Common.DbDataAdapter.QuietClose(IDbConnection connection, ConnectionState originalState) à System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) à System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) à System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) à Recherche_Ecart_TVA.FrnRechEcartTVA.TraitementNoPiece(DateTime datefrom, DateTime dateto) dans C:\Documents and Settings\Pdossantos\Mes documents\Visual Studio 2005\Projects\Recherche Ecart TVA\Recherche Ecart TVA\FrmRechEcartTVA.vb:ligne 128

Voici ce qui passe dans mon code jusqu'à l'exception qui est levée :

Dim

StrSql
As
String =
""

StrSql =
"SELECT F_ECRITUREC.CG_NUM, sum(F_ECRITUREC.EC_MONTANT) as MONTANT, F_ECRITUREC.TA_CODE, F_ECRITUREC.JO_NUM, F_ECRITUREC.EC_PIECE, F_TAXE.TA_TAUX from F_JOURNAUX,F_ECRITUREC, F_TAXE where F_ECRITUREC.TA_CODE=F_TAXE.TA_CODE and F_ECRITUREC.JO_NUM=F_JOURNAUX.JO_NUM and (left(F_ECRITUREC.CG_NUM,2) between '60' and '69' or left(F_ECRITUREC.CG_NUM,2) between '70' and '79' or left(F_ECRITUREC.CG_NUM,2)='44') and F_JOURNAUX.JO_TYPE in (0,1,2) and (ec_jour + JM_date - 1) between '{d " & Format(
CDate(datefrom),
"yyyy-MM-dd") &
"}' and '{d " & Format(
CDate(dateto),
"yyyy-MM-dd") &
"}' group by F_ECRITUREC.CG_NUM, F_ECRITUREC.TA_CODE, F_ECRITUREC.JO_NUM, F_ECRITUREC.EC_PIECE, F_TAXE.TA_TAUX order by EC_PIECE"

 ODataAdapter =

New OdbcDataAdapter(StrSql, oCnx)
ODataSet New DataSetODataAdapter.FillLoadOption LoadOption.OverwriteChanges

ODataAdapter.Fill(ODataSet,

"ECRITURES")

J'ai
énormément besoin de votre aide car je ne sait vraiment pas ou regarder.

S'agirait'il d'un bug du driver que j'utilise je n'en ai aucune idée.

Si vous avez déjà rencontré cette erreur ou que vous avez une piste de réflexion, je suis à votre écoute.

Merci d'avance.

Cordialement,

Pierre

1 réponse

Ptitdos18 Messages postés 2 Date d'inscription vendredi 30 mars 2007 Statut Membre Dernière intervention 4 mai 2007
4 mai 2007 à 08:22
Re à tous,

Petite information, la requête suivante passe correctement :

StrSql =

"SELECT F_ECRITUREC.CG_NUM, F_ECRITUREC.EC_MONTANT, F_ECRITUREC.TA_CODE, F_ECRITUREC.JO_NUM, F_ECRITUREC.EC_PIECE, F_TAXE.TA_TAUX from F_JOURNAUX,F_ECRITUREC, F_TAXE where F_ECRITUREC.TA_CODE=F_TAXE.TA_CODE and F_ECRITUREC.JO_NUM=F_JOURNAUX.JO_NUM and (left(F_ECRITUREC.CG_NUM,2) between '60' and '69' or left(F_ECRITUREC.CG_NUM,2) between '70' and '79' or left(F_ECRITUREC.CG_NUM,2)='44') and F_JOURNAUX.JO_TYPE=0 and year(JM_date) =2007 order by EC_PIECE"Je pense donc que c'est un problème au niveau de l'instruction sum ou des dates. Je vais tester tout ceci.

Mais si vous avez une piste, je suis toujours preneur

Cordialement,

Pierre
0
Rejoignez-nous