C # Proplem с 32-битным исполняемым файлом - PullRequest
0 голосов
/ 09 сентября 2018

Я написал этот код с помощью Visual Studio 2015:

static string strconnect = "Dsn=mx86";
static public string strDoc_key = "";
static public bool bPicFounded = false;
OdbcDataAdapter dr = new OdbcDataAdapter();

DataSet ds = new DataSet();
Thread thread = null;
static public OdbcConnection dataConnection = new OdbcConnection(strconnect);
static public string strInitialDirectory = "";

public frmMain()
{
    InitializeComponent();
    try
    {
        if (dataConnection.State != ConnectionState.Open)
            dataConnection.Open();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

private void frmMain_Load(object sender, EventArgs e)
{
    if (dataConnection.State != ConnectionState.Open)
    {
        this.Invoke(new MethodInvoker(delegate { this.Close(); }));
    }
    try
    {
       // this.Invoke(new MethodInvoker(delegate
       // {

            DataTable mydt = new DataTable();
            using (OdbcCommand ord = new OdbcCommand("", dataConnection))
            {
                ord.CommandText = "SELECT `AnläggningsNr` GroupID ,`Beskrivning` GroupName  from `Utrustningar` " +
                                  "WHERE (((`NivåUpp`)='TOP') AND ((`Enhet`)='00'))";

                mydt.Load(ord.ExecuteReader());

                cboGroups.SelectedIndexChanged -= cboGroups_SelectedIndexChanged;

                if (mydt.Rows.Count > 0)
                {
                    cboGroups.ValueMember = "GroupID";
                    cboGroups.DisplayMember = "GroupName";

                    cboGroups.DataSource = mydt.DefaultView;

                    cboGroups.SelectedIndex = 0;
                    cboGroups_SelectedIndexChanged(null, null);
                }

                cboGroups.SelectedIndexChanged += cboGroups_SelectedIndexChanged;
            }
    }
    catch (Exception ex)
    {
        MessageBox.Show("a)Message is: " + ex.Message);
    }

}

Когда я делаю сборку для x86, выпадающий список заполняется system.data.datarowview, но когда я делаю сборку для x64, он отлично работает.

В чем может быть причина этой проблемы?

1 Ответ

0 голосов
/ 11 сентября 2018

Когда я заменяю Показать значение члена из cboGroups.DisplayMember = "GroupName"; к cboGroups.DisplayMember = mydt.columns [1] .columnname И сделайте то же самое с ценным членом, это работает хорошо и даст мне ожидаемые результаты Поэтому, когда я пытаюсь отладить, чтобы узнать разницу между двумя выражениями Я замечаю что Строка «GroubName» содержит символ с нулевым символом в конце, например «GroubName \ 0», поэтому имя mydt.columns [1] .column дает правильное имя столбца с символом, заканчивающимся нулем Это то, что я заметил Подумайте, что проплемен в драйвере odbc, который дает мне этот тип ошибок

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...