レコードの削除

解決


ぷりん  2006-12-21 10:00:45  No: 134674

VB6でmdbファイルを読み込んで
ある特定のレコードをflexgridに表示して、
表示されているものを一つ削除したいんです。
データベースの主キーはオートナンバー型です。
flexgridのクリック位置からdelete文で消去しようとしたのですが・・・

SQLで抽出したレコードのオートナンバーが1,2、・・となると思いきや
3,14と元のレコードの数字のままでうまく指定できません。
どうすればうまく指定できるでしょうか?


魔界の仮面弁士  2006-12-21 10:56:33  No: 134675

# 質問の意味がわからない……。

> flexgridのクリック位置からdelete文で消去しようとしたのですが・・・

えぇと、それはつまり、

1. クリック位置から、グリッドの行番号を取得。
2. その行に相当するレコードを取得。
3. そのレコードの主キー値を取得。
4. その主キー値を使って DELETE クエリによる削除実行

——という処理を行おうとしてみたが、その途中で
何かしらの問題が起こった、ということなのですよね。

> SQLで抽出したレコードのオートナンバーが1,2、・・となると思いきや

オートナンバー自体は、新規レコードを追加(INSERT)するときに、
その値が自動的に採番されるというだけのものであって、
取得(SELECT)や削除(DELETE)の際には、それがオートナンバーで
あるかどうかは、特に気にする必要が無いのでは?
連番で返される事が保証されているわけでもありませんし。

> 3,14と元のレコードの数字のままでうまく指定できません。
『元のレコード』というのが何を意味するのかわかりませんが、
3 や 14 という値だと、何か問題があるのでしょうか?


ぷりん  2006-12-21 22:52:46  No: 134676

>1. クリック位置から、グリッドの行番号を取得。
>2. その行に相当するレコードを取得。
>3. そのレコードの主キー値を取得。

質問が分かりにくくてすみません^^;
グリッドの行番号からレコードの取得の仕方が分からないんです。
ちなみにレコードはselect文で抽出したものから取得したいです。

>3 や 14 という値だと、何か問題があるのでしょうか?
グリッドの行番号とオートナンバーの比較によって
削除しようとしていたためです・・・。


ぷりん  2006-12-22 00:41:39  No: 134677

Set drec = cn.Execute("select ID from テーブル where 日付 ='" & NowDate & "'")
主キーを取得できたのですが、
グリッドの行番号との比較の仕方がわかりません。
レコードをどうつかえばいいのでしょうか?


もげ  2006-12-22 01:41:40  No: 134678

グリッドに表示する際、IDも一緒に抽出&表示(列を非表示にしてもいい)しておいて
TextMatrix()でIDの値を取得するのが楽でしょうね。
'私ならそうしますが


ぷりん  2006-12-22 02:46:46  No: 134679

解決しました!
魔界の仮面弁士様、もげ様ありがとうございました!!


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

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






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