НЕАНГЛИЙСКАЯ строка red из MS ACCESS 2007 становится грязным кодом
Дорогие
Мой VB.NET проект соединяет MS ACCESS 2007 с помощью OleDbConnection, строка подключения как показано ниже
"Поставщик=Майкрософт.Туз.Oledb для.12.0;Источник данных=Д:\Мои Документы\управление макро надежного расположения\DOMTS.# то # ;"
считывает поля с помощью OleDb. OleDbDataReader
Фрагмент кода, который читает строку, выглядит следующим образом
cmd.CommandText = "select BLNO,SUM(WT) AS [T_WT],SUM(VOL) AS [T_VOL],NPOD,CCD FROM QueryNotify where [InSVVD.SVVD]='" + ComboBoxIn.Text + "' and [OutSVVD.FULL]='" + ComboBoxOut.Text + "' GROUP BY BLNO,NPOD,CCD" 'cmd is a OleDb.OleDbCommand dr = cmd.ExecuteReader 'dr is OleDb.OleDbDataReader Do While dr.Read DirectCast(EXWS.Cells(intActRowNO + intROW_Detl, intActColNO), Excel.Range).Value = intBL_COUNT DirectCast(EXWS.Cells(intActRowNO + intROW_Detl, intActColNO + 1), Excel.Range).Value = dr.Item("BLNO") DirectCast(EXWS.Cells(intActRowNO + intROW_Detl, intActColNO + 5), Excel.Range).Value = dr.Item("T_WT") If dr.Item("T_VOL") > 0 Then DirectCast(EXWS.Cells(intActRowNO + intROW_Detl, intActColNO + 6), Excel.Range).Value = dr.Item("T_VOL") End If MsgBox(dr.Item("CCD")) 'To show the string red from database before assinged to MS Excel range, but messy code shown DirectCast(EXWS.Cells(intActRowNO + intROW_Detl, intActColNO + 7), Excel.Range).Value = dr.Item("CCD") DirectCast(EXWS.Cells(intActRowNO + intROW_Detl, intActColNO + 8), Excel.Range).Value = dr.Item("NPOD") Dim cmd2 As New OleDb.OleDbCommand Dim dr2 As OleDb.OleDbDataReader cmd2.Connection = conDOMTS cmd2.CommandText = "select CTNNO,CTNTYPE,SEALNO from QueryNotify where BLNO='" + dr.Item("BLNO") + "'" dr2 = cmd2.ExecuteReader While dr2.Read DirectCast(EXWS.Cells(intActRowNO + intROW_Detl, intActColNO + 2), Excel.Range).Value = dr2.Item("CTNNO") DirectCast(EXWS.Cells(intActRowNO + intROW_Detl, intActColNO + 3), Excel.Range).Value = dr2.Item("CTNTYPE") DirectCast(EXWS.Cells(intActRowNO + intROW_Detl, intActColNO + 4), Excel.Range).Value = dr2.Item("SEALNO") intROW_Detl = intROW_Detl + 1 End While dr2.Close() intBL_COUNT = intBL_COUNT + 1 Loop
Проблема, поднятая из приведенных ниже утверждений
MsgBox(dr.Item("CCD")) 'To show the string red from database before assinged to MS Excel range, but messy code shown,also messy code shown in Excel DirectCast(EXWS.Cells(intActRowNO + intROW_Detl, intActColNO + 7), Excel.Range).Value = dr.Item("CCD")
CCD - это поле памятки в MS ACCESS 2007. Если я открою файл базы данных напрямую, чтобы проверить файл, я увижу, что все символы показаны на правильном китайском языке.
Позавчера я не вносил никаких изменений в свой код и базу данных, но вчера хорошо работающий код начал испытывать проблемы. Может ли кто - нибудь помочь подсказать, как это исправить?
Что я уже пробовал:
Пытались изменить строку соединения на
"Поставщик=Майкрософт.Туз.Oledb для.12.0;Источник данных=Д:\Мои Документы\управление макро надежного расположения\DOMTS.# то#; кодировка=utf8 в"
но возникла ошибка, так как не удалось найти устанавливаемый ISAM