VB6でmdbファイルを読み込んで
ある特定のレコードをflexgridに表示して、
表示されているものを一つ削除したいんです。
データベースの主キーはオートナンバー型です。
flexgridのクリック位置からdelete文で消去しようとしたのですが・・・
SQLで抽出したレコードのオートナンバーが1,2、・・となると思いきや
3,14と元のレコードの数字のままでうまく指定できません。
どうすればうまく指定できるでしょうか?
# 質問の意味がわからない……。
> flexgridのクリック位置からdelete文で消去しようとしたのですが・・・
えぇと、それはつまり、
1. クリック位置から、グリッドの行番号を取得。
2. その行に相当するレコードを取得。
3. そのレコードの主キー値を取得。
4. その主キー値を使って DELETE クエリによる削除実行
——という処理を行おうとしてみたが、その途中で
何かしらの問題が起こった、ということなのですよね。
> SQLで抽出したレコードのオートナンバーが1,2、・・となると思いきや
オートナンバー自体は、新規レコードを追加(INSERT)するときに、
その値が自動的に採番されるというだけのものであって、
取得(SELECT)や削除(DELETE)の際には、それがオートナンバーで
あるかどうかは、特に気にする必要が無いのでは?
連番で返される事が保証されているわけでもありませんし。
> 3,14と元のレコードの数字のままでうまく指定できません。
『元のレコード』というのが何を意味するのかわかりませんが、
3 や 14 という値だと、何か問題があるのでしょうか?
>1. クリック位置から、グリッドの行番号を取得。
>2. その行に相当するレコードを取得。
>3. そのレコードの主キー値を取得。
質問が分かりにくくてすみません^^;
グリッドの行番号からレコードの取得の仕方が分からないんです。
ちなみにレコードはselect文で抽出したものから取得したいです。
>3 や 14 という値だと、何か問題があるのでしょうか?
グリッドの行番号とオートナンバーの比較によって
削除しようとしていたためです・・・。
Set drec = cn.Execute("select ID from テーブル where 日付 ='" & NowDate & "'")
主キーを取得できたのですが、
グリッドの行番号との比較の仕方がわかりません。
レコードをどうつかえばいいのでしょうか?
グリッドに表示する際、IDも一緒に抽出&表示(列を非表示にしてもいい)しておいて
TextMatrix()でIDの値を取得するのが楽でしょうね。
'私ならそうしますが
解決しました!
魔界の仮面弁士様、もげ様ありがとうございました!!
ツイート | ![]() |