2012-04-25 174 views
1

を入力して、私はXMLWebServiceからデータを取得する(vb.net上)機能を持っている:型のオブジェクトをキャストすることができません「System.Data.DataView」「System.Data.IDataReader」

Private Function GetDataSchedule() As DataTable 
    Dim xTable As Data.DataTable 
    xTable = xMaster.GetSchedule() 

    'Bind to DataTable 
    Dim DT As New System.Data.DataTable 
    DT.Load(xTable.DefaultView) '--> When I set a breakpoint, the error start from here 

    Return DT 
End Function 

そして、この関数はGetDataSchedule()関数を呼び出すします

Public Sub ShowDataSchedule() 
    Dim DSSchedule As New System.Data.DataSet 
    DSSchedule.Tables.Add(GetDataSchedule) 

End Sub 

をしかし、私は、コードを実行するときに、エラーメッセージが表示されます上の結果: Unable to cast object of type 'System.Data.DataView' to type 'System.Data.IDataReader'.

ときだけI GetDataSchedule()関数を実行すると、値が返されますが、関数を呼び出すために個別に作成すると、エラーが発生します。何か不足していますか?君の力が必要。おかげで...

答えて

0

あなたはGetDataSchedule(からnull参照を取り戻すかもしれないので、けれどもこの

DSSchedule.Tables.Add(GetDataSchedule().Copy()) 

を試してみてください)、あなたのコードビットを要因を直す方が良いでしょう:

Dim schedule as Data.DataTable = GetDataSechedule() 
If Not IsNothing(schedule) Then 
    DSSchedule.Tables.Add(schedule.Copy()) 
End If 

null参照で.Copy()を実行しようとすると、コードがブームになります。

+0

こんにちは、ありがとう..動作しません。私はまだメッセージを持っていますが、問題はヌルリファレンスを返さないと思いますが、私は十分ではありません。 –

+0

申し訳ありませんが、私は明確ではありません。私はあなたの問題の解決策は上記のCopy()メソッドだと思います。ヌル参照チェックは私が追加した余分なものでした。 –

0

Load関数は、引数としてDataReaders(例:SqlDataReader)のみを受け取りますが、既にデータテーブルを持っています。 DT = xTableを持つだけで十分です。

関連する問題