C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: spreadへのデータ表示について


(過去ログ 36 を表示中)

[トピック内 26 記事 (1 - 20 表示)]  << 0 | 1 >>

■18250 / inTopicNo.1)  spreadへのデータ表示について
  
□投稿者/ VB初心者 (1回)-(2008/05/12(Mon) 11:40:45)

分類:[VB.NET/VB2005] 

2008/05/12(Mon) 14:24:26 編集(投稿者)
2008/05/12(Mon) 14:24:21 編集(投稿者)

<pre><pre>開発環境はVB.netでDBはSQLサーバーです。

DBからSelectした値をSpreadに表示しようと思い、DataSetにSelectした結果を格納しDataSourceで
格納した結果を表示しようとしたのですが、フィールド名だけしか表示できず値が表示されません。
ソースは以下のようにしています。

Private Sub データ表示関数()
Dim dataset As New DataSet
Dim cmnd As New SqlCommand
Dim dataAda As New SqlDataAdapter
Dim SQL As String
Dim obTable As DataTable

    SQL = "select * from 取得したいテーブル"

'コマンド生成
cmnd = New SqlCommand
Call proc_sqlCmndCnn(SQL, cmnd, dataAda, dataset, "aaaaaa") ←SQL実行用の共通関数(この関数内で接続処理、Fillメソッド等が行われています)

スプレッド.DataSource = dataset

上記のようにしたのですが、うまくいきません。

また、上記の処理を以下のように変更すると値もうまく表示できます。

Private Sub データ表示関数()
Dim dataset As New DataSet
Dim cmnd As New SqlCommand
Dim dataAda As New SqlDataAdapter
Dim SQL As String
Dim obTable As DataTable

    SQL = "select * from 取得したいテーブル"

'コマンド生成
cmnd = New SqlCommand
Call proc_sqlCmndCnn(SQL, cmnd, dataAda, dataset, "aaaaaa") ←SQL実行用の共通関数(この関数内で接続処理、Fillメソッド等が行われています)

obTable = New DataTable
dataAda.Fill(obTable)

      スプレッド.DataSource = obTable

すいませんが、ご教授願えますでしょうか。
よろしくお願い致します。</pre></pre>
引用返信 編集キー/
■18252 / inTopicNo.2)  Re[1]: spreadへのデータ表示について
□投稿者/ はつね (662回)-(2008/05/12(Mon) 12:18:52)
はつね さんの Web サイト
No18250 (VB初心者 さん) に返信
> また、上記の処理を以下のように変更すると値もうまく表示できます。

Call proc_sqlCmndCnnを実行した後のdatasetの内容にレコードは含まれていないのでは?

また、Call proc_sqlCmndCnnを実行した後のdatasetの内容と、dataAda.Fill(obTable)を実行した後のdatasetの内容はどのような相違があるのでしょうか。


> Dim dataset As New DataSet
これを 「Dim dataset1 As New DataSet」として変数名をdataset1にしても同様でしょうか(データ表示関数()プロシージャの中だけでOK)。

引用返信 編集キー/
■18253 / inTopicNo.3)  Re[2]: spreadへのデータ表示について
□投稿者/ VB初心者 (2回)-(2008/05/12(Mon) 12:47:11)
No18252 (はつね さん) に返信
はつねさん返信ありがとうございます。
> Call proc_sqlCmndCnnを実行した後のdatasetの内容にレコードは含まれていないのでは?

レコードが含まれていないというのはどうことなのでしょうか?
共通関数実行後に
dataset.Tables("aaaaaaa").Rows.Count()
でレコード数を取得できているのですが、これでもレコードが含まれていないということになるのでしょうか?

> また、Call proc_sqlCmndCnnを実行した後のdatasetの内容と、dataAda.Fill(obTable)を実行した後のdatasetの内容はどのような相違があるのでしょうか。
上記をウォッチ式で確認してみましたが、相違はみられませんでした…。

>> Dim dataset As New DataSet
> これを 「Dim dataset1 As New DataSet」として変数名をdataset1にしても同様でしょうか(データ表示関数()プロシージャの中だけでOK)。
こちらの変数名を変更するだけということでしょうか?

質問ばかりですいませんがよろしくお願い致します。
引用返信 編集キー/
■18255 / inTopicNo.4)  Re[3]: spreadへのデータ表示について
□投稿者/ やじゅ (357回)-(2008/05/12(Mon) 13:00:15)
No18253 (VB初心者 さん) に返信

DataSetの場合、Tableを複数格納可能なので、どのTableを表示するのか
指定する必要があったかな、DataMemberプロパティ

http://otndnld.oracle.co.jp/easy/dotnet/spread/index.html

DataTableは1つしかないので、DataMemberは指定はしなくても良いってなとこかな。
引用返信 編集キー/
■18256 / inTopicNo.5)  Re[4]: spreadへのデータ表示について
□投稿者/ VB初心者 (4回)-(2008/05/12(Mon) 13:08:38)
No18255 (やじゅ さん) に返信
やじゅさん返信ありがとうございます。

スプレッド.DataSource = dataset
スプレッド.DataMember= "表示するテーブル名"
のように変更してためしてみたのですが、やはりフィールド名しか表示できませんでした…。
どうにもこうにもまこっちゃん状態です…。


引用返信 編集キー/
■18259 / inTopicNo.6)  Re[5]: spreadへのデータ表示について
□投稿者/ はつね (663回)-(2008/05/12(Mon) 14:05:14)
はつね さんの Web サイト
No18256 (VB初心者 さん) に返信

まず「フィールド名だけしか表示できず」とありますが、このフィールド名はSPREADに元々定義してあるものですよね。
で、そのフィールド名の下に、それぞれのデータが表示される事を期待しているのですよね。

また、Call proc_sqlCmndCnn実行直後のdataset変数の内容はaaaaaaaテーブルが1つだけあって、そのテーブルにはデータが設定されている(つまりレコードがある)状態なんですよね。

そして、そのdatasetの内容はテーブル数やレコード数、テーブル名なども含めてdataAda.Fill(obTable)を実行したときと同じなのですよね。

ちょっと確認
|obTable = New DataTable
|dataAda.Fill(obTable)
|スプレッド.DataSource = dataset
としていますが、これって
|obTable = New DataTable
|dataAda.Fill(obTable)
|スプレッド.DataSource = obTable
としているなんて事はないですか?

また、次の事を確認したという事ですが、
|スプレッド.DataSource = dataset
|スプレッド.DataMember= "表示するテーブル名"
テーブルがaaaaaaaということは次のようにして確認してダメだったんですよね?
|スプレッド.DataSource = dataset
|スプレッド.DataMember= "aaaaaaa"

引用返信 編集キー/
■18261 / inTopicNo.7)  Re[6]: spreadへのデータ表示について
□投稿者/ VB初心者 (5回)-(2008/05/12(Mon) 14:23:59)
2008/05/12(Mon) 14:26:28 編集(投稿者)
2008/05/12(Mon) 14:25:36 編集(投稿者)

No18259 (はつね さん) に返信
はつねさん返信ありがとうございます。
説明不足ですいません。

フィールド名しか表示できないというのは、selectしたフィールドにエイリアスをつけて
フィールド名としています。
そのエイリアスがスプレッドのヘッダに表示されます。
select A as テスト from 取得したいテーブル
の「テスト」がヘッダに表示されるだけで、データが表示できない状態です。
期待することは、フィールド名の下にそれぞれのデータが表示されることです。
説明がへたくそですいません。


> また、Call proc_sqlCmndCnn実行直後のdataset変数の内容はaaaaaaaテーブルが1つだけあって、そのテーブルにはデータが設定されている(つまりレコードがある)状態なんですよね。
datasetのRows.count()で件数が取得できているので、データは設定されていると思うのですが…。

> そして、そのdatasetの内容はテーブル数やレコード数、テーブル名なども含めてdataAda.Fill(obTable)を実行したときと同じなのですよね。
>
> ちょっと確認
> |obTable = New DataTable
> |dataAda.Fill(obTable)
> |スプレッド.DataSource = dataset
> としていますが、これって
> |obTable = New DataTable
> |dataAda.Fill(obTable)
> |スプレッド.DataSource = obTable
> としているなんて事はないですか?
すいません間違えました。
以下のようにするとうまくいきます。
|obTable = New DataTable
|dataAda.Fill(obTable)
|スプレッド.DataSource = obTable
質問に書いた内容が間違ってました。すいません。

> また、次の事を確認したという事ですが、
> |スプレッド.DataSource = dataset
> |スプレッド.DataMember= "表示するテーブル名"
> テーブルがaaaaaaaということは次のようにして確認してダメだったんですよね?
> |スプレッド.DataSource = dataset
> |スプレッド.DataMember= "aaaaaaa"
はい、上記のように確認したのですが、ダメでした。

ちょっとわからないのですが、なぜ以下のようにするとうまくいくのかがわからないです。
Private Sub データ表示関数()
Dim dataset As New DataSet
Dim cmnd As New SqlCommand
Dim dataAda As New SqlDataAdapter
Dim SQL As String
Dim obTable As DataTable

    SQL = "select A as テスト from 取得したいテーブル"

'コマンド生成
cmnd = New SqlCommand
Call proc_sqlCmndCnn(SQL, cmnd, dataAda, dataset, "aaaaaa") ←SQL実行用の共通関数(この関数内で接続処理、datasetに対してFillメソッド等が行われています)

obTable = New DataTable
dataAda.Fill(obTable)

      スプレッド.DataSource = obTable

すいませんが、よろしくお願いいたします。
引用返信 編集キー/
■18262 / inTopicNo.8)  Re[7]: spreadへのデータ表示について
□投稿者/ はつね (664回)-(2008/05/12(Mon) 14:47:06)
はつね さんの Web サイト
No18261 (VB初心者 さん) に返信
> datasetのRows.count()で件数が取得できているので、データは設定されていると思うのですが…。

なぜ、レコードの内容を確認せず.Countの値だけ確認して終わりにしてしまうのかが良く分かりません。
レコードの内容を確認しておく事は、画面に表示される内容と一致しているかのチェックするのに必要な情報ですよ(つまり、ここが上手く行ったときの次のステップの確認として)。

> 以下のようにするとうまくいきます。
> |obTable = New DataTable
> |dataAda.Fill(obTable)
> |スプレッド.DataSource = obTable
> 質問に書いた内容が間違ってました。すいません。

だとしたら、比べるのは、proc_sqlCmndCnnを実行直後のdatasetと、dataAda.Fill(obTable)のobTableを比べるって事になりますね。
まあ、両方共にdatasetを設定ではなく後者は上記のように記載ミスだったという事ですので、この比較は特に行う必要はないかもですね。


> ちょっとわからないのですが、なぜ以下のようにするとうまくいくのかがわからないです。

元投稿に誤りがあり
|obTable = New DataTable
|dataAda.Fill(obTable)
|スプレッド.DataSource = obTable
ならばうまくいくということですから、SPREADのDataSourceにDataSetを指定したときはNGでDataTableを指定したときはOKという事だと思います。

だとしたら、proc_sqlCmndCnnを実行した後に
スプレッド.DataSource = dataset.Tables(0)
とやってもうまく動かないでしょうか。

引用返信 編集キー/
■18263 / inTopicNo.9)  Re[4]: spreadへのデータ表示について
□投稿者/ はつね (665回)-(2008/05/12(Mon) 14:54:07)
はつね さんの Web サイト
> http://otndnld.oracle.co.jp/easy/dotnet/spread/index.html

ちなみに、URL先はASP.NETのときですね。
SPREADは、GrapecityのやつでなおかつWindows Forms用を前提として私は回答しています(Winアプリだと確認はしていませんが)。
で、GrapecityのSPREADであればWinアプリ用とWebアプリ用は別製品です。

一応、ご参考まで。

引用返信 編集キー/
■18264 / inTopicNo.10)  Re[5]: spreadへのデータ表示について
□投稿者/ やじゅ (358回)-(2008/05/12(Mon) 15:06:03)
No18263 (はつね さん) に返信
>>http://otndnld.oracle.co.jp/easy/dotnet/spread/index.html
>
> ちなみに、URL先はASP.NETのときですね。
> SPREADは、GrapecityのやつでなおかつWindows Forms用を前提として私は回答しています(Winアプリだと確認はしていませんが)。
> で、GrapecityのSPREADであればWinアプリ用とWebアプリ用は別製品です。
>

フォローありがとうございます。
GrapecityのSPREAD かつ、DataMemberプロパティが画像として掲載されていたので、
Winアプリ用とWebアプリ用かOracleとSQLサーバーなど気にせず(判断せず)にリンクしてしまいました。
引用返信 編集キー/
■18266 / inTopicNo.11)  Re[8]: spreadへのデータ表示について
□投稿者/ VB初心者 (6回)-(2008/05/12(Mon) 15:09:17)
No18262 (はつね さん) に返信
はつねさん返信ありがとうございます。

> なぜ、レコードの内容を確認せず.Countの値だけ確認して終わりにしてしまうのかが良く分かりません。
> レコードの内容を確認しておく事は、画面に表示される内容と一致しているかのチェックするのに必要な情報ですよ(つまり、ここが上手く行ったときの次のステップの確認として)。
すいません、レコードの内容を確認とありますが、共通関数(proc_sqlCmndCnn)実行後にdatasetの中身を確認ということになるのでしょうか?
SQLをクエリアナライザで実行し期待する値が取得できることは確認したのですが、はつねさんがおっしゃる確認方法と認識が違いましたらご教授願えますでしょうか。よろしくお願い致します。

> だとしたら、比べるのは、proc_sqlCmndCnnを実行直後のdatasetと、dataAda.Fill(obTable)のobTableを比べるって事になりますね。
> まあ、両方共にdatasetを設定ではなく後者は上記のように記載ミスだったという事ですので、この比較は特に行う必要はないかもですね。
>
>
>>ちょっとわからないのですが、なぜ以下のようにするとうまくいくのかがわからないです。
>
> 元投稿に誤りがあり
> |obTable = New DataTable
> |dataAda.Fill(obTable)
> |スプレッド.DataSource = obTable
> ならばうまくいくということですから、SPREADのDataSourceにDataSetを指定したときはNGでDataTableを指定したときはOKという事だと思います。
>
> だとしたら、proc_sqlCmndCnnを実行した後に
> スプレッド.DataSource = dataset.Tables(0)
> とやってもうまく動かないでしょうか。

スプレッド.DataSource = dataset.Tables(0)

スプレッド.DataSource = dataset.Tables("aaaaaa")
とも試してみたのでですが、フィールド名しか表示されませんでした…。

共通関数内でdatasetに値を取得して共通関数実行後にDataTableに値を取得し格納するような形していますが
この場合、共通関数内でSQLの実行を行い、dataAda.Fill(obTable)でまたSQLが実行されることになるのでしょうか?
この場合だとDataTableに値を格納する処理が余計なのかと思いまして、SQL実行後datasetに格納した値を
スプレッドに展開できないものなのかと思いまして、トピックを立てさせていただきました。
datasetでテーブル名を指定してスプレッドに展開する方法と、DataTableにテーブルを格納してスプレッドに展開する
のでは何が違うのかがよくわかりません…。

何度もすいませんが、ご教授のほどよろしくお願い致します。


引用返信 編集キー/
■18268 / inTopicNo.12)  Re[9]: spreadへのデータ表示について
□投稿者/ はつね (666回)-(2008/05/12(Mon) 15:47:17)
はつね さんの Web サイト
No18266 (VB初心者 さん) に返信
> すいません、レコードの内容を確認とありますが、共通関数(proc_sqlCmndCnn)実行後にdatasetの中身を確認ということになるのでしょうか?

その通りです。
明示的に
|obTable = New DataTable
|dataAda.Fill(obTable)
|スプレッド.DataSource = obTable
としたときには上手く行くのですから、独自関数proc_sqlCmndCnnでdatasetに設定されてくるのが何か違うはずなのです。

>>スプレッド.DataSource = dataset.Tables(0)
>>とやってもうまく動かないでしょうか。
>
> スプレッド.DataSource = dataset.Tables(0)
> や
> スプレッド.DataSource = dataset.Tables("aaaaaa")
> とも試してみたのでですが、フィールド名しか表示されませんでした…。

やはり独自関数proc_sqlCmndCnnで設定されてくるDataTableの内容が気になりますね。
元質問者は共通関数と書いていますが、私は意図的に独自関数と書いています。なぜだか分かりますか?
元質問者にとっては共通関数かも知れませんが、掲示板をみている元質問者以外の方にとっては未知の処理内容の元質問者の開発チーム独自の関数だからです。
よって、その中で何をやっているのか、その実行結果が正しいのかは誰も予想できません。


> 共通関数内でdatasetに値を取得して共通関数実行後にDataTableに値を取得し格納するような形していますが
> この場合、共通関数内でSQLの実行を行い、dataAda.Fill(obTable)でまたSQLが実行されることになるのでしょうか?

その通りです。
そして、dataAda.Fill(obTable)後であれば正しくSPREADに表示ができるという事から考えると、自ずと問題がありそうな個所、そしてそれを切り分けるにはどこでどのような情報を取得すべきかも見えてくると思います。

引用返信 編集キー/
■18272 / inTopicNo.13)  Re[10]: spreadへのデータ表示について
□投稿者/ VB初心者 (7回)-(2008/05/12(Mon) 16:10:32)
No18268 (はつね さん) に返信
はつねさん返信ありがとうございます。

独自関数proc_sqlCmndCnnの中身ですが以下のような関数になっています。

    Public Function proc_sqlCmndCnn(ByVal sql As String, _
                                    ByVal sqlcmnd As SqlCommand, _
                                    ByVal dataAda As SqlDataAdapter, _
                                    ByVal DataSet As DataSet, _
                                    ByVal strdatatabl As String _
                                    ) As Boolean

            '接続文字列設定
            sqlcmnd.Connection = cnn
            'SQL設定
            sqlcmnd.CommandText = sql
            'SQL発行時のタイムアウト1200秒(20分)設定
            sqlcmnd.CommandTimeout = 1200
            'データアダプターにコマンドを設定
            dataAda.SelectCommand = sqlcmnd

            'データセットにデータの実態を取得する()
            dataAda.Fill(DataSet, strdatatabl)


呼び元↓
Private Sub データ表示関数()
 Dim dataset As New DataSet
 Dim cmnd As New SqlCommand
 Dim dataAda As New SqlDataAdapter
 Dim SQL As String
 Dim obTable As DataTable 

    SQL = "select A as テスト from 取得したいテーブル"

    'コマンド生成
    cmnd = New SqlCommand
    Call proc_sqlCmndCnn(SQL, cmnd, dataAda, dataset, "aaaaaa") ←SQL実行用の共通関数(この関数内で接続処理、Fillメソッド等が行われています)



独自関数内でdataAda.Fill(DataSet, strdatatabl)を行い、DataSetにSQLの実行結果を格納しているのですが処理自体の間違い等ございますでしょうか?
問題の切り分けが見えてきていません…。
上記のような処理だとdatasetに値を設定されないのでしょうか?

引用返信 編集キー/
■18273 / inTopicNo.14)  Re[11]: spreadへのデータ表示について
□投稿者/ はつね (668回)-(2008/05/12(Mon) 16:20:18)
はつね さんの Web サイト
No18272 (VB初心者 さん) に返信
> 独自関数proc_sqlCmndCnnの中身ですが以下のような関数になっています。
>
> Public Function proc_sqlCmndCnn(ByVal sql As String, _
> ByVal sqlcmnd As SqlCommand, _
> ByVal dataAda As SqlDataAdapter, _
> ByVal DataSet As DataSet, _
> ByVal strdatatabl As String _
> ) As Boolean

問題の切り分けポイントの例:
----------------------------------
proc_sqlCmndCnnの中のdataAda.Fill(DataSet, strdatatabl)を実行した次の行でdataset.Tables(strdatatabl)にレコードが設定されているか、Countプロパティではなくクイックウォッチなどで確認する。
⇒問題なければ、proc_sqlCmndCnnのデータ取得部分はOK

proc_sqlCmndCnnの呼出し元で、proc_sqlCmndCnnを実行した次の行でdataset.Tables("aaaaaa")にレコードが設定されているか、Countプロパティではなくクイックウォッチなどで確認する。
⇒問題なければ、obTableの内容をクイックウォッチなどで確認して比較する。
----------------------------------

引用返信 編集キー/
■18274 / inTopicNo.15)  Re[11]: spreadへのデータ表示について
□投稿者/ やじゅ (359回)-(2008/05/12(Mon) 16:20:52)
No18272 (VB初心者 さん) に返信
>
> Public Function proc_sqlCmndCnn(ByVal sql As String, _
> ByVal sqlcmnd As SqlCommand, _
> ByVal dataAda As SqlDataAdapter, _
> ByVal DataSet As DataSet, _
> ByVal strdatatabl As String _
> ) As Boolean
>

ByVal DataSet As DataSet,

ByRef DataSet As DataSet,
なのでは?
引用返信 編集キー/
■18276 / inTopicNo.16)  Re[12]: spreadへのデータ表示について
□投稿者/ VB初心者 (8回)-(2008/05/12(Mon) 16:28:25)
No18273 (はつね さん) に返信
はつねさん返信ありがとうございます。

> 問題の切り分けポイントの例:
> ----------------------------------
> proc_sqlCmndCnnの中のdataAda.Fill(DataSet, strdatatabl)を実行した次の行でdataset.Tables(strdatatabl)にレコードが設定されているか、Countプロパティではなくクイックウォッチなどで確認する。
> ⇒問題なければ、proc_sqlCmndCnnのデータ取得部分はOK
>
> proc_sqlCmndCnnの呼出し元で、proc_sqlCmndCnnを実行した次の行でdataset.Tables("aaaaaa")にレコードが設定されているか、Countプロパティではなくクイックウォッチなどで確認する。
> ⇒問題なければ、obTableの内容をクイックウォッチなどで確認して比較する。
> ----------------------------------

レコードが設定されているかのの確認なのですが、クイックウォッチ式でdataset.Tables(0).Rows.item(0)のようにしてItemArray内にデータが設定されていれば
レコードが設定されているということになるのでしょうか?
レコードが設定されているかの確認でどのプロパティを参照すればよいのかが正しい確認になりますでしょうか?
初歩的な質問ばかりですいませんがご教授の方よろしくお願い致します。

引用返信 編集キー/
■18278 / inTopicNo.17)  Re[12]: spreadへのデータ表示について
□投稿者/ はつね (670回)-(2008/05/12(Mon) 16:30:18)
はつね さんの Web サイト
No18274 (やじゅ さん) に返信
> ■No18272 (VB初心者 さん) に返信
>>
>> Public Function proc_sqlCmndCnn(ByVal sql As String, _
>> ByVal sqlcmnd As SqlCommand, _
>> ByVal dataAda As SqlDataAdapter, _
>> ByVal DataSet As DataSet, _
>> ByVal strdatatabl As String _
>> ) As Boolean
>>
>
> ByVal DataSet As DataSet,
> ↓
> ByRef DataSet As DataSet,
> なのでは?

ByValでも呼出し元にdatasetの内容は戻りますよ。
引用返信 編集キー/
■18279 / inTopicNo.18)  Re[13]: spreadへのデータ表示について
□投稿者/ はつね (671回)-(2008/05/12(Mon) 16:35:43)
はつね さんの Web サイト
No18276 (VB初心者 さん) に返信
> レコードが設定されているかのの確認なのですが、クイックウォッチ式でdataset.Tables(0).Rows.item(0)のようにしてItemArray内にデータが設定されていれば
> レコードが設定されているということになるのでしょうか?
> レコードが設定されているかの確認でどのプロパティを参照すればよいのかが正しい確認になりますでしょうか?

例えば、
(1)クイックウォッチのウィンドウでとして「dataset.Tables(0)」を設定
(2)クイックウォッチの一覧に「dataset.Tables(0)」がでているはず。値カラムに「{System.Data.DataTable}」と表示され右端に虫眼鏡があるはず
(3)虫眼鏡をクリックするとDataSetビジュアライザが開いて、DataTableを選択するとその内容が一覧表示されるはず

Visual StudioのIDE(統合開発環境)の使い方を勉強すると、色々発見があると思うし悩む局面も少なくなると思いますよ。


引用返信 編集キー/
■18280 / inTopicNo.19)  Re[12]: spreadへのデータ表示について
□投稿者/ VB初心者 (9回)-(2008/05/12(Mon) 16:37:10)
No18274 (やじゅ さん) に返信
やじゅさん返信ありがとうございます。
> ByVal DataSet As DataSet,
> ↓
> ByRef DataSet As DataSet,
> なのでは?

ByRefに変更して試したのですが、結果は同じでした。
ここらへんもわからなくなってきたのですが、独自関数でByValで定義されているのに
独自関数呼び出し後、dataset.Tables(0).Rows.Count()でレコード数を取得できるのが不思議です。
受け取り側でByValで定義されている場合、独自関数内のdatasetにデータがセットされ
独自関数を抜けた場合、datasetに値が入っていないと思ったのですが、確認してみると
レコード数も取得できていますし、データも入っているように見えます。
ん〜私がByValとByRefの扱いを勘違いしてるのでしょうか…。
引用返信 編集キー/
■18281 / inTopicNo.20)  Re[13]: spreadへのデータ表示について
 
□投稿者/ はつね (672回)-(2008/05/12(Mon) 16:58:51)
はつね さんの Web サイト
No18280 (VB初心者 さん) に返信
> ん〜私がByValとByRefの扱いを勘違いしてるのでしょうか…。

DataSetな変数dataset(うーん混乱しそうだ)はデータセットの値そのものが入っているわけではありません。
単純に言えば、datasetに含まれる各種データが格納されているメモリ領域へのポインタが入っています。
よって、値を呼出し元に戻すかどうかという点で見た場合のByValとByRef指定では基本的に相違はありません。

引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -