• 締切済み

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

みんなの回答

noname#4564
noname#4564
回答No.2

> 質問1 年齢順にレコードを並べかえる。 並び順を明示したSQLをソースにすればOKです。 SELECT 名前, 年齢, 性別 FROM name_tbl ORDER BY 年齢 > 質問2 性別のFをWに一括変換する。 Connection.Execute (または、状況により、Command.Execute) メソッドで 更新します。 UPDATE name_tbl SET 性別 = 'W' WHERE 性別 = 'F' # 「性別」は文字列ではなく、数値で定義する ( 「性別テーブル」を別途設ける ) のが妥当です。  

gorou
質問者

お礼

せっかく回答もらいましたが質問1はすでに回答者No1の方が示されてしる内容と重複するのと、質問に「なお、SQLの文法を質問しているのではありません。」とわざわざ断っています。 質問2は質問の例として性別MとF示してしるわけでデータベースの つくりかたを質問しているわけではないのと、SQL文をたずねていないのは 質問1と同じです。

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

>年齢順にレコードを並べかえる。 これは、取得するときに 行うしかないと思います。 取得後だったら 配列などに入れて 自分でソートしてあげるだけでしょう。 >なお、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を理解されてるならば、どうしてこれができないのか 補足をお願いします。

gorou
質問者

お礼

回答ありがとうございます。 質問の仕方が悪くて、伝わらないのだとおもいますがレコードを1件づつ 読んで、更新(mRs.Update)や削除(mRs.Delete)などを処理する方法はわかるのですが、SQLを使ってどうやってレコードを処理するのかがわからないのです。それともそうゆうことはできないのですか? 2の回答に書かれていることはレコードを1件ずつ読み込んで更新するわけで、SQLを使ってないように思うのですが。 1の回答はどこにSQL文を書いて、その結果をどこにどうやって保存するの ですか?それがわかりません。 SELECT * FROM name_tbl ORDER BY 年齢 でいいと思いますが、実行結果はどこにあるのですか? 超初心者なので、初歩が不明なのだと思います。

関連するQ&A