- PR -

テーブルの読込み更新ロジック

1
投稿者投稿内容
ichiro
会議室デビュー日: 2004/03/15
投稿数: 12
投稿日時: 2004-03-16 16:27
AccessのEOFや新規追加(addnew)、更新(edit)は、VB.NETではどのように記述するのでしょうか?
やりたいことは、SQLのテーブルを読んで、無かった場合は新規、存在する場合は、更新 を
行いたいのです。
また、何か参考になるものがあればお願いします。

↓Access97です。今度AccessからVB.NETでの開発になりました。

Dim WS As Workspace, db As Database
Dim WK_REC1 As Recordset
Dim s_sql As String

Set WS = DBEngine.Workspaces(0)
Set db = WS.Databases(0)
s_sql = "SELECT * FROM uriagetbl WHERE (cd = '0015')"
Set WK_REC1 = db.OpenRecordset(s_sql, DB_OPEN_DYNASET)
If WK_REC1.EOF Then
WK_REC1.AddNew
・・・・・
WK_REC1.Update

Else
WK_REC1.Edit
・・・・・
WK_REC1.Update
End If


【↓VB.NET この先が?です】

Dim myConn As System.Data.SqlClient.SqlConnection
Dim s_sql As String
Dim myCommand As System.Data.SqlClient.SqlCommand
Dim myReader As System.Data.SqlClient.SqlDataReader

Try
myConn = New System.Data.SqlClient.SqlConnection( _
"server=DBdata;database=testtable;" & _
"uid=sa;pwd=password")
myConn.Open()

Catch ex0 As Exception
Response.Write("**err**" & ex0.Message & ex0.ToString)
End Try

Try
s_sql = "SELECT * FROM uriagetbl WHERE (uriday = '2004/03/15') "
myCommand = New System.Data.SqlClient.SqlCommand(s_sql)
myCommand.Connection = myConn
myReader = myCommand.ExecuteReader()

if myreader.???????????
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-03-16 17:09
読み取りサンプル
(MSDNのキーワードタブで、キーワードに「sqldatareader」を入力、一覧から「サンプル」を選択、表示されたページをCTRL+Fで「sqldatareader」を検索)
http://ja.gotdotnet.com/quickstart/util/srcview.aspx?path=%2fquickstart%2fhowto%2fsamples%2fadoplus%2fsqldtreader%2fsqldtreader.src

更新か、挿入かは、同じようにIF文で分けます。MSDNの方に、やはりサンプルがありますから、参考にしてください。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-03-16 17:33
ichiroさん、こんにちは。

引用:

AccessのEOFや新規追加(addnew)、更新(edit)は、VB.NETではどのように記述するのでしょうか?
やりたいことは、SQLのテーブルを読んで、無かった場合は新規、存在する場合は、更新 を
行いたいのです。
また、何か参考になるものがあればお願いします。


結果の有無(EOF)に該当するものとしては、取り敢えず、SqlDataReader の Read() メソッドについて調べてみて下さい。
また、SqlDataReader は dbForwardOnly + dbReadOnly を指定して開いた RecordSet のようなものなので、追加や更新、削除は出来ません。SQLで処理します。

更新可能な RecordSet ...に近い物としては データセット というものがありますので、MSDNライブラリの「Visual Basic および Visual C# の概念」-「Visual Studio .NET におけるデータセットの更新」あたりを参照してみて下さい。
ichiro
会議室デビュー日: 2004/03/15
投稿数: 12
投稿日時: 2004-03-16 18:20
Jittaさん、きくさん、お世話さまです。

  引用:------------
  読み取りサンプル
  (MSDNのキーワードタブで、キーワードに「sqldatareader」を入力、一覧から「サンプ  ル」を選択、表示されたページをCTRL+Fで「sqldatareader」を検索)
  --------------

キーワードに「sqldatareader」を入力、一覧から「サンプル」が見つかりませんでした。

  引用:------------
  結果の有無(EOF)に該当するものとしては、取り敢えず、SqlDataReader の Read() メソ  ッドについて調べてみて下さい。
  また、SqlDataReader は dbForwardOnly + dbReadOnly を指定して開いた RecordSet   のようなものなので、追加や更新、削除は出来ません。SQLで処理します。

  更新可能な RecordSet ...に近い物としては データセット というものがありますので、  MSDNライブラリの「Visual Basic および Visual C# の概念」-「Visual Studio .NET   におけるデータセットの更新」あたりを参照してみて下さい。
  --------------

ご指摘の箇所調べてみたのですが、ん〜ん、いまいち良くわかりません。
MSDNライブラリの「Visual Basic および Visual C# の概念」-「Visual Studio .NET におけるデータセットの更新」あたりも
見つけるもとができず。。。
追加や更新、削除はSQL文で一発だと思うのですが、その方法もわからないでいます。
まだまだ勉強不足です。

↓AccessのときはこれでOKだったんですが。
DoCmd.RunSQL "DELETE xxxtbl.* FROM xxxtbl "
ichiro
会議室デビュー日: 2004/03/15
投稿数: 12
投稿日時: 2004-03-16 18:32
すみません、きくさんの

MSDNライブラリの「Visual Basic および Visual C# の概念」-「Visual Studio .NET におけるデータセットの更新」あたりも

は、見つけることができました。
が、結局どうすればよいのか、?です。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-03-17 08:48
引用:

ichiroさんの書き込み (2004-03-16 18:20) より:

キーワードに「sqldatareader」を入力、一覧から「サンプル」が見つかりませんでした。


 ??検索するのに、「キーワード」と「検索」というタブがあるのですが、どちらで検索しました?私は「キーワード」の方です。「フィルタ条件」が「なし」または「.NET Framework」以外になっていると、出てこない可能性があります。「キーワード」タブの「検索する文字列」に、「sqldatareader」と入れると、下のリストボックスに、
>>>>>
SqlDataReader クラス
 SqlDataReader クラスについて
 サンプル
 すべてのメンバ
 プロパティ
 ・・・
<<<<<
と、出てくると思うのですが・・・って、WebのMSDNではなく、「Microsoft Visual Studio .NET ドキュメント」のことを、「MSDN」と言っています。WebのMSDN Liblaryは、このドキュメントとほぼ同一内容です。ドキュメントにリンクを張るときは、「Microsoft〜ドキュメント」の方はインストール環境によってURIが一定しないため、WebのMSDNの方で同じトピックを探してリンクしています(私の場合)。



脱線:
> きくさん
 ん〜、実は、ずっと聞きたくて、聞けなかったこと^^;。「きくちゃんさん」とするべきか、「きくさん」とするのか、はたまた「ちゃん」がついているので「きくちゃん」でいいのか?

[ メッセージ編集済み 編集者: Jitta 編集日時 2004-03-17 08:49 ]
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-03-17 10:27
ichiroさん、お早うございます。

引用:

が、結局どうすればよいのか、?です。


DAOとかRDOとかADODBあたりから移行する場合、結構とまどうかも知れません。
MSDNライブラリで「System.Data.SqlClient 名前空間」の各クラス、プロパティ、メソッドについて、一通り目を通して、それぞれのトピックにある使用例等を参考にしながら一つ一つ理解していくしかないと思います。

ちなみに、SQL文の実行については、SqlCommand の Execute〜 で始まるメソッドで行います。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-03-17 10:46
Jittaさん、お早うございます。

引用:

脱線:
> きくさん
 ん〜、実は、ずっと聞きたくて、聞けなかったこと^^;。「きくちゃんさん」とするべきか、「きくさん」とするのか、はたまた「ちゃん」がついているので「きくちゃん」でいいのか?


いや、もう、お好きなように。(^^;
「きく公」でも「きくやん」でも「きく坊」でも「おきくどん」でも...。
# 多重敬称(笑)もアレですけど、さん付けすると収まりが良すぎて何となく笑えるハンドルの方もいますね。
1

スキルアップ/キャリアアップ(JOB@IT)