2012-02-29 3 views
0

Может кто-нибудь объяснить мне, почему следующий подраздел на машине разработки работает плавно, но когда я развертываю и устанавливаю на другой компьютер, я получаю сообщение об ошибке.Ссылка на объект-объект vb.net после перехода на другой компьютер

Ошибка я получаю «Couldnt показать любой, потому что: Ссылка на объект не указывает на экземпляр объекта»

В то время как на машине разработки он работает. Обе версии Win7, я включил все файлы sql, как указано в инструкции по развертыванию для файла данных и sql-ce dll из msdn.

Файл данных в порядке и соединение хорошее, потому что «cmd.ExecuteNonQuery()» работает без проблем.

Public Sub LoadFolders() 
    Dim ds As New DataSet 
    Dim da As SqlCeDataAdapter = New SqlCeDataAdapter() 
    Dim cmd As SqlCeCommand 



    Try 
     cmd = New SqlCeCommand("SELECT distinct(folder) from addressbook", connection.DbPrivate) 
     cmd.CommandType = Data.CommandType.Text 
    Catch e As Exception 
     Console.WriteLine("Could not execute sql: {0}", e.Message) 
    End Try 



    Try 
     With da 
      .SelectCommand = cmd 
      .Fill(ds, "folders") 
     End With 

    Catch e As Exception 
     Console.WriteLine("Unable to fill dataset: {0}", e.Message) 
    End Try 

    Try 
     For Each irow As DataRow In ds.Tables("folders").Rows 
      MsgBox(irow(0)) 
     Next 
    Catch e As Exception 
     MsgBox("Couldnt show any because: " + e.Message) 'this is the error that pops up. 
    End Try 


End Sub 
+0

Это то, что вы можете легко определить с помощью вашего отладчика: либо 'ds' равно null, либо нет таблицы, называемой * папками * (или это null), или коллекция полей 'irow' равна null. Теперь IIRC коллекция '.Rows' и' .Fields' никогда не должна быть нулевой, что оставляет только пару вариантов. – slugster

+0

на моей машине dev отладчик не дает никаких ошибок. но при установке на другой машине. И окно ошибки на другой машине не дает много информации. (как мне отлаживать эту машину? извините за глупость q) – renevdkooi

+0

Очевидно, что база данных SQLCE на втором компьютере имеет разные данные с данными на вашем компьютере-разработчике, следовательно, другой результат. Либо создайте больше нулевых проверок и передислоцируйте их на целевую машину, либо возьмите базу данных из целевого объекта и используйте его на своей машине с вашим отладчиком (это, вероятно, самое простое и быстрое решение). – slugster

ответ

0

Я думаю, ваша проблема может быть в строке подключения, убедитесь, что это правильно, а затем проверить, если вы включили любые ссылки, которые они включены на другом компьютере.

+0

Ну, я сейчас смущен ... Я внес некоторые изменения, но в тот момент, когда я установил Office на другую машину, все работало нормально.И когда я использую VB для присоединения к процессу на мой dev-машину, я все равно получаю некоторые ошибки при запуске, хотя, когда приложение установлено на другом ПК и я прикрепляюсь к этому источнику, ошибок не возникает ... странно ... не уверен если это была связь или офис ... – renevdkooi

0

В чем проблема, я до сих пор не знаю. Но вот как я это решил.

Я открыл новый проект. Добавлены источники базы данных (которые были компактными файлами базы данных sql из проекта, который не работал) затем выполнил шаги для создания COnnection, dataAdapter и набора данных Затем параметры были сохранены в моих переменных параметров проекта.

Затем я перетащил 7 компактных sql-файлов (sqlce * .dll) в свой проект и установил для копирования, когда новый. Затем в My Project - опубликовать вкладку в разделе «файлы приложений», я убедился, что они были включены, и мои файлы данных были установлены в DATA

Также предпосылками были рамки 3.5 и sql ce 3.5. Теперь я могу получить доступ ко всем данным ... очень очень странно ...

Смежные вопросы