出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

無題   ハムさん [2006/04/13 17:53:35] [5756]
  Re:無題   暇人さん [2006/04/17 11:35:21] [5759]
    発言者により削除されました!! Lightningさん [2006/04/17 13:03:52] [5760]

[5756] 無題
投稿者:ハムさん 2006/04/13 17:53:35
はじめまして。
現在Windows2000、SQLServer2000でプログラムを組んでいるものです。
DBのテーブルに存在チェックを行い、
レコードの有無によって同テーブルにUpdate,Insert処理を
x回実行したいのですが
(DBにある数値データをカウントアップする為、
Update,Insertのデータは全部異なります)、
途中でエラーが発生して一度ループを抜けた後、
再度続きからループ処理を実行した場合、
ループ数以上の回数でInsert,Update処理が走っています。
(6回ループを回しているのに、DB処理が1000回実行されています)
DB処理をコメントにしてループを確認しましたが、
正常にループしている為、一体どこでDB処理が異常回数走っているのか判断できません。
申し訳ありませんが、
この書込みに目の止まった方で、何か原因を思い当たる方は、
教えて頂けませんでしょうか。

どうぞ宜しくお願い致します。

---------------------------------------------------------------
Set conn = -----

For i=0 To x
conn.BeginTrans

Set rs1 = Server.CreateObject("ADODB.Recordset")

'*********** ここより以下はFunction関数として別ファイルに記述 ************
strSQL = "select * from T_Test1 ----"
rs1.Open strSQL , conn, adOpenDynamic, adLockReadOnly, adCmdText
If Not rs1.EOF Then
'---値の取得 ---
 rs1.Close
Sql2 = "Update T_Test1 set ---"
conn.Execute(Sql2)
Else
 rs1.Close
Sql2 = "Insert into T_Test1 ---"
conn.Execute(Sql2)
End If

strSQL = "select * from T_Test2 ----"
rs1.Open strSQL , conn, adOpenDynamic, adLockReadOnly, adCmdText

If Not rs1.EOF Then
'---値の取得 ---
Else
Sql3 = "Insert into T_Test2 ---"
conn.Execute(Sql3)
End If

'********************** ここまで ******************************************

If (Err.Number = 0) Then
conn.CommitTrans
Else
conn.RollbackTrans
Exit For
End If

Next
---------------------------------------------------------------

[5759] Re:無題
投稿者:暇人さん 2006/04/17 11:35:21
どうにかしたい気持ちはとっても良くわかるのですが
ループがおかしい場合、真っ先に疑うべき部分はループカウンター
を弄くってる部分なわけでして
xに値を代入している部分やiの値を変更している部分があるならば
載せてくれないと答えようが無いかと思います


> はじめまして。
> 現在Windows2000、SQLServer2000でプログラムを組んでいるものです。
> DBのテーブルに存在チェックを行い、
> レコードの有無によって同テーブルにUpdate,Insert処理を
> x回実行したいのですが
> (DBにある数値データをカウントアップする為、
> Update,Insertのデータは全部異なります)、
> 途中でエラーが発生して一度ループを抜けた後、
> 再度続きからループ処理を実行した場合、
> ループ数以上の回数でInsert,Update処理が走っています。
> (6回ループを回しているのに、DB処理が1000回実行されています)
> DB処理をコメントにしてループを確認しましたが、
> 正常にループしている為、一体どこでDB処理が異常回数走っているのか判断できません。
> 申し訳ありませんが、
> この書込みに目の止まった方で、何か原因を思い当たる方は、
> 教えて頂けませんでしょうか。
>
> どうぞ宜しくお願い致します。
>
> ---------------------------------------------------------------
> Set conn = -----
>
> For i=0 To x
> conn.BeginTrans
>
> Set rs1 = Server.CreateObject("ADODB.Recordset")
>
> '*********** ここより以下はFunction関数として別ファイルに記述 ************
> strSQL = "select * from T_Test1 ----"
> rs1.Open strSQL , conn, adOpenDynamic, adLockReadOnly, adCmdText
> If Not rs1.EOF Then
> '---値の取得 ---
>  rs1.Close
> Sql2 = "Update T_Test1 set ---"
> conn.Execute(Sql2)
> Else
>  rs1.Close
> Sql2 = "Insert into T_Test1 ---"
> conn.Execute(Sql2)
> End If
>
> strSQL = "select * from T_Test2 ----"
> rs1.Open strSQL , conn, adOpenDynamic, adLockReadOnly, adCmdText
>
> If Not rs1.EOF Then
> '---値の取得 ---
> Else
> Sql3 = "Insert into T_Test2 ---"
> conn.Execute(Sql3)
> End If
>
> '********************** ここまで ******************************************
>
> If (Err.Number = 0) Then
> conn.CommitTrans
> Else
> conn.RollbackTrans
> Exit For
> End If
>
> Next
> ---------------------------------------------------------------

[5760] Re:無題
投稿者:Lightningさん 2006/04/17 13:03:52
発言者により削除されました!!



TreeBBS For ASP V.0.1.3
Program By YasNet