填充数据表时“尝试读取或写入受保护的内存”
||
我正在使用ReportViewer开发一些报表,在某些时候,我必须连接到Oracle数据库以检索一些数据并将其存储在DataTable中。
当DataAdapter执行Fill方法时,出现此错误:
\“试图读取或写入受保护的内存。这通常表示其他内存已损坏。”
这是代码(不幸的是,我无法将该sql代码放在过程之内):
OleDbConnection objConn = new OleDbConnection(ConfigurationManager.ConnectionStrings[\"Premio\"].ConnectionString);
OleDbCommand objCmd = new OleDbCommand();
DataTable objDt = new DataTable();
int vTipoTerr = LoadTipoTerritorio(ReportParameter.ReportData.Parameters.Item(\"pTerritorio\").Value.ToString());
string vDataParametroDataFinal = ReportParameter.ReportData.Parameters.Item(\"pMesAnoCompetencia\").Value.ToString();
int vDataInicial = int.Parse(vDataParametroDataFinal.Substring(0, 4));
vDataInicial = vDataInicial - 1;
vDataInicial = int.Parse(vDataInicial.ToString() + vDataParametroDataFinal.Substring(4, 2));
objCmd.CommandText = \"SELECT T.Nome, \" +
\" T.Prontuario, \" +
\" C.Cobertura, \" +
\" Cn.Mesano_competencia, \" +
\" G.Grupo, \" +
\" T.Territorio, \" +
\" N.Negocio \" +
\" FROM Calculo C \" +
\" Inner Join Territorio T \" +
\" ON C.Id_Territorio = T.Id_Territorio \" +
\" Inner Join Grupo G \" +
\" ON C.Id_Grupo = G.Id_Grupo \" +
\" Inner Join Cenario Cn \" +
\" On Cn.Id_cenario = C.Id_cenario \" +
\" Inner Join Negocio N \" +
\" On Cn.Id_negocio = N.Id_negocio \" +
\" Where Cn.Mesano_competencia Between :p1 And :p2 --datas \" +
\" And G.Grupo = :p3 \" +
\" And Sub_terr(T.Territorio, Decode(:p4, 1, \'SETOR\', 2, \'DISTRITO\', 3, \'REGIONAL\')) = :p5 \" +
\" And (Cn.Flag_cenario_disp = 1 Or Cn.Flag_cenario_disp_rec = 1) \" +
\" And N.Negocio = :p6 \" +
\" And Cn.Flag_recuperacao = 0 \" +
\" Order By Cn.Mesano_competencia; \" +
\"union all \" +
\"SELECT T.Nome, \" +
\" T.Prontuario, \" +
\" C.Cobertura, \" +
\" Cn.Mesano_competencia, \" +
\" G.Grupo, \" +
\" T.Territorio, \" +
\" N.Negocio \" +
\" FROM Calculo_Rec C \" +
\" Inner Join Territorio T \" +
\" ON C.Id_Territorio = T.Id_Territorio \" +
\" Inner Join Grupo G \" +
\" ON C.Id_Grupo = G.Id_Grupo \" +
\" Inner Join Cenario Cn \" +
\" On Cn.Id_cenario = C.Id_cenario \" +
\" Inner Join Negocio N \" +
\" On Cn.Id_negocio = N.Id_negocio \" +
\" Where Cn.Mesano_competencia Between :p1 And :p2 \" +
\" And G.Grupo = :p3 \" +
\" And Sub_terr(T.Territorio, Decode(:p4, 1, \'SETOR\', 2, \'DISTRITO\', 3, \'REGIONAL\')) = :p5 \" +
\" And (Cn.Flag_cenario_disp = 1 Or Cn.Flag_cenario_disp_rec = 1) \" +
\" And N.Negocio = :p6 \" +
\" And Cn.Flag_recuperacao = 1 \" +
\" Order By Cn.Mesano_competencia \";
objCmd.Parameters.Add(new OleDbParameter(\"p1\", OleDbType.Integer)).Value = vDataInicial;
objCmd.Parameters.Add(new OleDbParameter(\"p2\", OleDbType.Integer)).Value = int.Parse(vDataParametroDataFinal);
objCmd.Parameters.Add(new OleDbParameter(\"p3\", OleDbType.VarChar, 30)).Value = ReportParameter.ReportData.Parameters.Item(\"pGrupo\").Value.ToString();
objCmd.Parameters.Add(new OleDbParameter(\"p4\", OleDbType.Integer)).Value = vTipoTerr;
objCmd.Parameters.Add(new OleDbParameter(\"p5\", OleDbType.VarChar, 30)).Value = ReportParameter.ReportData.Parameters.Item(\"pTerritorio\").Value.ToString();
objCmd.Parameters.Add(new OleDbParameter(\"p6\", OleDbType.VarChar, 30)).Value = ReportParameter.ReportData.Parameters.Item(\"pNegocio\").Value.ToString();
OleDbDataAdapter objAdapter = new OleDbDataAdapter(objCmd);
objConn.Open();
objAdapter.Fill(objDt);
objConn.Close();
非常感谢你 (:
没有找到相关结果
已邀请:
1 个回复
砷竣阿
和
对象: