質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

1802閲覧

VB.NETでGrapeCityのSPREADに、DBからとってきた値でコンボボックスを表示させたい。

saten

総合スコア1

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2022/11/08 02:32

編集2022/11/08 13:46

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の公式には質問を問い合わせ済みですが、返答がなかなかこないのでこちらで先に解決できないかなと思ったので質問させていただきました。ですので、公式に問い合わせてください等の回答は不要です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/11/08 02:58

あなたは https://teratail.com/questions/6ylv4hs0lg56tn に同じ質問を書いて即削除リクエストで非表示にした人だね。そういうのは Teratail にノイズを残すことになり、迷惑になると分かってますか?
saten

2022/11/08 03:48

その段階では自分でコーティングができておらず、丸投げの質問だと言われ反省したためもう一度自分でソースを書いて実行したのですが、エラーが出てしまったので相談した次第です。
退会済みユーザー

退会済みユーザー

2022/11/08 04:30

質問は後からでも編集できますので、今後は最初に立てたスレッドを直すようにしてください。「質問へのコメント」蘭はコメントを受けて質問を編集するためにあります。 コードの上下は ``` と ``` で囲ってください。インデントされてないコードは質問者さんも見る気がしないのでは? どの行でエラーが出るのか書いてください。 Spread の ComboBox など知らない人のために、何を渡せばよいかの仕様を書くと回答が得やすいと思います。
saten

2022/11/08 04:46

仕様を理解しておらず、ご迷惑をお掛けしてしまい申し訳ありません。 また、コードの書き方についてやエラーについてもお教え頂きありがとうございます。たしかにspreadのコンボボックスについても明記しておくべきでした。配慮が足りておりませんでした。 こんな拙い質問にも関わらず、丁寧にご教示いただき、ありがとうございます。非常に勉強になりました。今後はSurferOnWww様に指摘していただきたことを注意した上で質問したいと思います。
guest

回答1

0

自己解決

Function(row) row(″名前″)を
Function(row) row.Field(Of String)(″名前″)
に変更したら解決しました。

投稿2022/11/08 04:25

saten

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問