- 締切済み
SQLでの処理
開発環境:WindowsXP、VB6、Access2000 ADO接続前提 ファイル全体のデータ(全レコード)に対して連続して処理するにはSQLで対応するのがいいのだと思いますが やりかたがわかりません。 たとえば、つぎのようなAccessのファイルがあったとします。 ファイル名:kojin.mdb テーブル名:name_tbl 名前 年齢 性別 太郎 20 M 花子 40 F 三郎 30 M 洋子 50 F 質問1 年齢順にレコードを並べかえる。 質問2 性別のFをWに一括変換する。 なお、SQLの文法を質問しているのではありません。 下のプログラム1でレコード表示を行ってます。 また、省略しますが、次のレコードや前のレコードを表示したり、レコードの更新・追加・削除などを行うこともできています。 これからどうすればSQL文を使って質問1や2の処理が可能になるのでしょうか? ご教授お願いしたします。 <プログラム1> Private mCn As ADODB.Connection Private mRs As ADODB.Recordset Private DBfile As String 'DBファイル名 Private DBtable As String 'テーブル名 Private Sub Form_Load() DBfile = "kojin.mdb" DBtable = "name_tbl" Call ConnectType Call SetFields End Sub Private Sub ConnectType() 'DB接続準備処理 Set mCn = New ADODB.Connection mCn.ConnectionString = DEF_CONNECT & App.Path & "\" & DBfile mCn.Open Set mRs = New ADODB.Recordset mRs.Source = DBtable mRs.ActiveConnection = mCn mRs.CursorType = adOpenDynamic mRs.LockType = adLockOptimistic mRs.Open End Sub Private Sub SetFields() Text1.Text = mRs.Fields("名前") Text2.Text = mRs.Fields("年齢i") Text3.Text = mRs.Fields("性別") End Sub
- みんなの回答 (2)
- 専門家の回答
みんなの回答
> 質問1 年齢順にレコードを並べかえる。 並び順を明示したSQLをソースにすればOKです。 SELECT 名前, 年齢, 性別 FROM name_tbl ORDER BY 年齢 > 質問2 性別のFをWに一括変換する。 Connection.Execute (または、状況により、Command.Execute) メソッドで 更新します。 UPDATE name_tbl SET 性別 = 'W' WHERE 性別 = 'F' # 「性別」は文字列ではなく、数値で定義する ( 「性別テーブル」を別途設ける ) のが妥当です。
- taknt
- ベストアンサー率19% (1556/7783)
>年齢順にレコードを並べかえる。 これは、取得するときに 行うしかないと思います。 取得後だったら 配列などに入れて 自分でソートしてあげるだけでしょう。 >なお、SQLの文法を質問しているのではありません。 と >これからどうすればSQL文を使って質問1や2の処理が可能になるのでしょうか? は よく わからないのですが、 SQL文を使うならば、 ODER BY というのを使えばいいと思いますが・・・。 2は Text2.Text = mRs.Fields("年齢i") の行を Text2.Text = mRs.Fields("年齢") if Text2.Text="F" then Text2.Text="W" としてあげればいいでしょう。 表示じゃなく、テーブルの中身を変えるならば UPDATE を使うべきだと思いますが。 上記のSQLを理解されてるならば、どうしてこれができないのか 補足をお願いします。
お礼
回答ありがとうございます。 質問の仕方が悪くて、伝わらないのだとおもいますがレコードを1件づつ 読んで、更新(mRs.Update)や削除(mRs.Delete)などを処理する方法はわかるのですが、SQLを使ってどうやってレコードを処理するのかがわからないのです。それともそうゆうことはできないのですか? 2の回答に書かれていることはレコードを1件ずつ読み込んで更新するわけで、SQLを使ってないように思うのですが。 1の回答はどこにSQL文を書いて、その結果をどこにどうやって保存するの ですか?それがわかりません。 SELECT * FROM name_tbl ORDER BY 年齢 でいいと思いますが、実行結果はどこにあるのですか? 超初心者なので、初歩が不明なのだと思います。
お礼
せっかく回答もらいましたが質問1はすでに回答者No1の方が示されてしる内容と重複するのと、質問に「なお、SQLの文法を質問しているのではありません。」とわざわざ断っています。 質問2は質問の例として性別MとF示してしるわけでデータベースの つくりかたを質問しているわけではないのと、SQL文をたずねていないのは 質問1と同じです。