[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/01/02(Sun) 00:40
投稿者名:KASHO
Eメール:
URL :
タイトル:
データグリッドから・・・
はじめまして、ご教授おねがいします。

環境はVB6、ACCESS2000、コネクションはjet4.0です。
フォームのイメージとしてはレコードの項目ごとに上部にテキストボックスがあり
下の方にデータグリッドを配置させてあります。

「参照ボタン」投下時にデータグリッドにレコードを表示させているのですが
データグリッドでフォーカスがあるレコードのデータを
抽出、更新することは可能ですか?
雰囲気としては・・・
・手動でデータグリッド内のレコードにフォーカスをあわせ
 コマンドボタン(例えば抽出ボタン)投下時にそのデータを抽出し
 テキストボックスに表示させ、そこで更新処理等をする
・(できるのであれば)データグリッド内のレコードを
 ダブルクリックすると、抽出しテキストボックスに表示させ、処理をする

このような質問で皆様に伝わるかどうか心配ですが^^;
よろしくお願いします。

投稿時間:2005/01/03(Mon) 18:51
投稿者名:Say
Eメール:
URL :
タイトル:
Re: データグリッドから・・・
> データグリッドでフォーカスがあるレコードのデータを
> 抽出、更新することは可能ですか?
可能です。
「データグリッドの行をクリックして選択すると、
選択レコードの各項目のデータが複数のテキストボックスに表示され、
それらを書き換えて別の行を選択すると変更内容がDBに反映される」
程度の処理でよいのなら、
コントロールをペタペタっと貼って、プロパティ設定すれば、
コード全然書かなくても実現できます。

投稿時間:2005/01/04(Tue) 01:46
投稿者名:KASHO
Eメール:
URL :
タイトル:
Re^2: データグリッドから・・・
Sayさんはじめまして^^
そうなのですか!
プロパティのみでできるのですか・・・
それは具体的にプロパティのどれを操作すると可能になるのか教えていただけないでしょうか?
よろしくお願いします。

投稿時間:2005/01/04(Tue) 13:28
投稿者名:Say
Eメール:
URL :
タイトル:
Re^3: データグリッドから・・・
●Formに以下のコントロールを配置
  ADOData Control   1ケ
  DataGrid Control  1ケ
  TextBox Control   フィールド数分

●ADODC1を選択。
  オブジェクトインスペクタのプロパティページでDB接続して、
  ついでにレコードソースを目的のテーブルに設定。
●DataGrid1を選択。
  DataGrid1のDataSourceをADODC1に設定。

●Text1〜Textnを順次選択。
  各TextBoxのDataSourceをADODC1に設定後、
  DataFieldを編集したいフィールドに設定。

あとは実行するだけ。

投稿時間:2005/01/05(Wed) 01:15
投稿者名:KASHO
Eメール:
URL :
タイトル:
Re^4: データグリッドから・・・
実行したところ、ちゃんと動きました。
Sayさんありがとうございます^^

例えばですが、このような処理はADOデータコントロールを使用しなくても実現可能なのでしょうか?
ソースでデータベースに接続等しているので(cnはコネクションで、cn.ConnectionStringなどを使用しています)
それを利用できないかなと思ったりしています。

あと、上記のとおりソースでデータベースに接続していますが、ADOデータコントロールを単純に追加して、
お教えいただいた設定をした場合の注意点等ありましたらお教え願えませんでしょうか?
(コネクションの重複?の問題とか発生するものなのでしょうか?)

なにせブランク3年で、重ね重ね程度の低い質問で申し訳ないですが、よろしくお願いします^^;

投稿時間:2005/01/05(Wed) 03:15
投稿者名:Say
Eメール:
URL :
タイトル:
Re^5: データグリッドから・・・
> 例えばですが、このような処理はADOデータコントロールを使用しなくても実現可能なのでしょうか?
可能です。各DataSourceにRecordsetをコードで設定してください。

> あと、上記のとおりソースでデータベースに接続していますが、ADOデータコントロールを単純に追加して、
> お教えいただいた設定をした場合の注意点等ありましたらお教え願えませんでしょうか?
> (コネクションの重複?の問題とか発生するものなのでしょうか?)
問題が発生した経験は記憶にありませんが、
コードが追いにくくなるので、個人的にはあまり使用しません。
(ConnectionString自動生成ツールとしては、よく使います。
その場合、Formに貼り付けて、プロパティページで接続テストに成功したら、
ConnectionStringだけコピーして、ADODCは消します。)

投稿時間:2005/01/06(Thu) 13:37
投稿者名:KASHO
Eメール:
URL :
タイトル:
Re^6: データグリッドから・・・
> > 例えばですが、このような処理はADOデータコントロールを使用しなくても実現可能なのでしょうか?
> 可能です。各DataSourceにRecordsetをコードで設定してください。

    Set rsgrid = New ADODB.Recordset
    chksql = "select * from *****"
    rsgrid.Open chksql, cn, adOpenStatic, adLockOptimistic
    Set KubunGrid.DataSource = rsgrid
    Text(0).DataField = "*****"
    Text(1).DataField = "*****"
    Text(2).DataField = "*****"
    Text(3).DataField = "*****"
    Text(4).DataField = "*****"
    Text(5).DataField = "*****"
    For cnt = 0 To 5
        Set Text(cnt).DataSource = rsgrid
    Next cnt
※*は例えばの値です^^;

としたらできました。
ありがとうございます^^
しかしそこでまた質問が発生してしまいました^^;
フォーム内にある各テキストボックスをクリアするボタンがあるのですが↓

    Dim cnt As Integer
    cnt = 0
    Do While cnt <= 5
        Text(cnt).Text = ""
        cnt = cnt + 1
    Loop

手順
1.データグリッドから選択してテキストボックスにデータを表示
2.フォーム内のクリアボタンをクリックしてテキストボックス消去
3.データグリッド内のレコードのフォーカスをほかのレコードに移動
させるとレコードがすべて空欄になってしまいます。
データフィールドを連結させているからそうなるのかなぁ、と思ったりしているのですが

    Text(cnt).DataField="" ※1

※1 0〜5でループさせています

としても、リンクは切れますが上記の問題はうまくいかないようです。
どうすれば宜しいでしょうか?


> (ConnectionString自動生成ツールとしては、よく使います。
> その場合、Formに貼り付けて、プロパティページで接続テストに成功したら、
> ConnectionStringだけコピーして、ADODCは消します。)

それはすごく使えますね!
私も使わせていただきます^^