System.Data.Odbc.OdbcException: ERROR [HY000] [DataDirect][ODBC Sybase Wire Protocol driver]String data code page conversion failed. Error in column 1.
   在 System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode)
   在 System.Data.Odbc.OdbcDataReader.GetData(Int32 i, SQL_C sqlctype, Int32 cb, Int32& cbActualOut)
   在 System.Data.Odbc.OdbcDataReader.internalGetString(Int32 i)
   在 System.Data.Odbc.OdbcDataReader.GetValue(Int32 i, TypeMap typemap)
   在 System.Data.Odbc.OdbcDataReader.GetValue(Int32 i)
   在 System.Data.Odbc.OdbcDataReader.GetValues(Object[] values)
   在 System.Data.ProviderBase.DataReaderContainer.CommonLanguageSubsetDataReader.GetValues(Object[] values)
   在 System.Data.ProviderBase.SchemaMapping.LoadDataRow()
   在 System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping)
   在 System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
   在 System.Data.Common.DataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
   在 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)
   在 Pro_Option.Trans.QueryData()
是用的ODBC连接到ASE中查询,语句为Select Tel_No from INDEX_TAB 
Tel_No为char 字符 在PB里面直接连到ASE中运行此句没有任何数据,可在C#中用用ODBC连过去就报这个错误.
 怎么会报如此错误,哪位仁兄给分析分析,

解决方案 »

  1.   

    来位大虾看看噻 ODBC用的是4.20的,头段时间都没有错,就昨天开始出现的,搞得郁闷得很
      

  2.   

    值是字符串,程序中要求是int
    GetValue(Int32 i) 
    使用GetString或其它方法试试,或者贴出代码看看。
      

  3.   

    应该是驱动的问题,因为头段时间都是正常的,FLD_TEL_NO是否VARCHAR,没有INT,我的原代码就是select * from INDEX_TAB  没有什么都嘛,主要求FLD_TEL_NO 有问题,不知道是怎么回事
      

  4.   

    就是这一行代码
    select * from INDEX_TAB
    ODBCConnection Myconn=new ODBCConnection(ODBCSTR);
    try{
    Myconn.Open();
    ODBCAD.....
    SAL.FILL(DS,"SHEET')
    }cat{}
    就是这么简单的一段代码,就报这个错误
      

  5.   

    只要不加FLD_TEL_NO 就没有问题,应该这个列的问题
      

  6.   

    发现一个问题,服务器中FLD_TEL_NO  是用的VARCHAR类型  我客户端ODBC中设置的字符用ISO_1,能够正常识别CHAR的类型,可遇到如果VARCHAR为空时就不会报错,一旦有数就报这个错误,请问这个要怎么解决呢
      

  7.   

    判断一下,如果为NULL 或''就改成什么其它的