
VB.NET歴2ヶ月ほどの初心者です。
VB.NETでGrapeCityのSPREADにdatatableからコンボボックスに値を配置したいのですが、「型 system.object[]のオブジェクト型 system.string[]にキャストできません」のエラーメッセージが出てしまいます。
以下ソースです。
----------
☆DBに接続するためのクラス
Public Function SqlAdapter(ByVal vSql As String,ByRef vDataTable As DataTable)As Integer
Try
_cmd.CommandText=vSql
_cmd.Transaction=_Trans
vDataTable=New DataTable
Dim lAdapter As New SqlDataAdapter(_cmd)
lAdapter.Fill(vDataTable)
catch ex As Exception
省略
End Function
☆SQL作成~実行モジュール
【SQL作成】
Private Function SelectFruit() As String
Dim sql As New System.Text.StringBuilder
sql.Append (″SELECT 名前,データ設定値 FROM フルーツテーブル″)
Return sql.ToString()
End Function
【SQL実行】
Private Function GetFruitData (ByVal vFrm As メインのフレーム名) As String()
Dim dt As DataTable
Try
dt = New DataTable
DBに接続するためのクラス. SqlAdapter(SelectFruit,dt)
Dim fruitData As String() = dt.AsEnumerable().Select(Function(row) row(″名前″)).ToArray()
Return fruitData
catch ex As Exception
省略
End Function
☆コンボボックスを表示するメインのフレーム
※ロードイベントに書いています
Call GetFruitData(Me)
Dim cmb As String()
cmb= GetFruitData(Me)
Dim cmbbox As New FarPoint.Win.Spread.CellType.ComboBoxCellType()
cmbbox.Items=cmb
Fruitsheet.Columns(3).CellType=cmbbox
☆フルーツテーブル中身
名前 データ設定値
りんご | 1
みかん l 2
さくらんぼ l 3
選択無し l NULL
---------
【やりたいこと】
フルーツテーブルの名前の列の名称(りんごなど)をSPREADのコンボボックスに表示させたい(データ設定値は持っている状態)。SQLを使用してDatatableに入れた値をfruitDataという配列にいれて、コンボボックスに設定したいのだが、冒頭で述べたエラーメッセージが出る。
【質問の経緯】
GrapeCityの公式には質問を問い合わせ済みですが、返答がなかなかこないのでこちらで先に解決できないかなと思ったので質問させていただきました。ですので、公式に問い合わせてください等の回答は不要です。



回答1件
あなたの回答
tips
プレビュー