Spreadについて

解決


旗国丸  2006-04-12 07:14:33  No: 95036

今回も力を借りたくここに書き込みました。旗国丸です。
まず環境ですが
VB6  
Microsoft ActiveX Data Objects 2.1 Library  (ADO)
SQLsever2000
ユーザ名  sa
パスワード  sa
テーブル  m_User
データベース IMS
表計算  Spread2.5J
これでフォーム1にSpreadをはりつけてm_Userのテーブルのレコードを表示し実行ボタンでフォーム2に飛び、フォーム2のテキストボックスにフォーム1のSpreadでマウス選択したレコードのデータを表示したいのですが。
どうすればよいのでしょうか。
コードは
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
dim c  as integer
dim r  as integer
cn.conectionでデータベースに接続(ここは問題なし) 
cn.open


旗国丸  2006-04-12 07:28:49  No: 95037

自己レスです。途中で送信してしまいましたすいません。
コードは
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
dim c  as integer
dim r  as integer
c = 1
r = 1
cn.conectionでデータベースに接続(ここは問題なし) 
cn.open
      with rs
       .cursoltype
       .locktype
       .open m_User ,cn
do until rs.eof
vaspread.row = r
vaspread.col = c
vaspread.text = rs.filds("UId")
c = c + 1
vaspread.col = c  
vaspread.text = rs.filds("UName")
r = r + 1
rs.movenext
loop
使ったオブジェクトを閉じ終了します。
これでspreadには
1 aaa
2 bbb
という感じで表示されます。

フォーム2にはフォームロード時に
text1/text = form2.vaspread.text 
としていますが先ほどのデータだとどこを選択してもbbbしか表示しません
あとできればですが
ヘッダーの名称がAのままで(ここを各フィールドの名称に変えたい)
しかもこのままだと件数が多くなると膨大に時間がかかるので、もっと簡単で少ない処理ですむ方法があるならぜひご教授ください。
変な送信をしてすいませんでした。
それでは説明も下手で見苦しいですがお願いします。


gari  2006-04-12 23:41:29  No: 95038

> フォーム2にはフォームロード時に
> text1/text = form2.vaspread.text 
> としていますが先ほどのデータだとどこを選択してもbbbしか表示しません

リファレンスには目を通されたでしょうか。
これは、
vaspread.row
vaspread.col
の値がbbbセルの値になっているためと思われます。

リファレンスのColプロパティのところに
Colの値は画面のActive列とは関係ありません。アクティブ列の列番号はActiveColプロパティより取得できます。
とあります。

したがって、
text1.text = form1.vaspread.text(説明文からいくとform1じゃないですか!?)
の前に、
form1.vaspread.Row = form1.vaspread.ActiveRow
form1.vaspread.Col = form1.vaspread.ActiveCol
とすればよい気がします。

> ヘッダーの名称がAのままで(ここを各フィールドの名称に変えたい)

これも、Rowプロパティを0にすればいいだけかと。
あとは同じだと思います。


gari  2006-04-13 03:45:05  No: 95039

すみません。

> text1.text = form1.vaspread.text(説明文からいくとform1じゃないですか!?)

ではなくて、
text2.text = form1.vaspread.text(説明文からいくとform1じゃないですか!?)

ですね。


旗国丸  2006-04-13 07:00:40  No: 95040

gariさんありがとうございます。
おかげでうまく処理ができました。
ただ列のヘッダーの名前を変えた時にその列のサイズを自動的に合わせる方法はあるのでしょうか。
こんな感じです。
vaspread.col  = 1
vaspread.row  = 0
vaspread.text  = "ユーザの名前"     'ヘッダーの名称を入れる
このユーザの名前が全て表示されるように列のサイズを自動的に合わせるようにしたいのですが。もし方法があるのならご教授をお願いします。


ん〜  2006-04-13 07:06:55  No: 95041

>このユーザの名前が全て表示されるように列のサイズを自動的に合わせるようにしたいのですが。

これも、列のサイズを定義するプロパティがあるので
リファレンスには目を通されたでしょうか。


旗国丸  2006-04-16 08:39:34  No: 95042

gariさん、ん〜さんありがとうございました。
おかげでスプレッドでの処理も無事にできました。
ご協力に感謝します。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加