2012-01-06 32 views
-2

新しいレコードが追加されていないにもかかわらず、プログラムの実行を開始すると、データベーステーブル(データセットからの選択参照)のレコード数が急激に増加することに気づいています。 SQL Studio Managerでクエリを実行すると、つまり、データセットから参照を選択すると、行数が増えることがわかります。プログラムが停止したとき。レコード数が元のレベルに戻ります。ここにコードがあります。なぜこれが起こるのですか?参照は一意ですが、表には主キーはありません。VB6レコードセットとSQLカウント

rs.Open "select reference,value1,datefield from datetable where field1 = 'value1' " & _  
       "order by reference", objAuditCon.ActiveCon, adOpenStatic, adLockPessimistic 
Do While Not rs.EOF 
    intReadCount = intReadCount + 1 
    DoEvents 
    If Not IsNull(rs("value1")) Then 
     testArray = Split(rs("value1"), ",") 
     rs2.Open "SELECT Date FROM TBL_TestTable WHERE Record_URN = '" & testArray(1) & "'", objSystemCon.ActiveCon, adOpenStatic, adLockReadOnly 
     If rs2.EOF Then 
      End If 
     If Not rs2.EOF Then 
      rs("DateField") = Format$(rs2("Date"), "dd mmm yy h:mm:ss") 
      rs.Update 
      intWriteCount = intWriteCount + 1 
     End If 
    rs2.Close 
    Else 
     End If 
    rs.MoveNext 
Loop 
rs.Close 
+2

以下のコメントを参照してください。これはあなたがhttp://stackoverflow.com/questions/8747341/vb6-recordset-updateで尋ねた同じ質問はありませんか? –

+0

この質問を書き直し、プライマリキーなしでレコードセット更新を実行し、テーブルレコード数の部分に焦点を当てるリスクについては、より良い回答が得られるはずです。 –

+0

シェーン、ありがとう。私はこれをしました。 C-Pounr Guru、私は元の質問をもう見ることができません。リンクをクリックするとエラーが表示されます。はい、それは同じ質問ですが、おそらく多少異なる言葉です。 – w0051977

答えて

0

それは少し混乱ですが、あなたがテーブルに持っているどのように多くの行に対して「intReadCount」によって与えられた合計を参照している場合は、この値を正しくクリアされていないかのようにそれが見えます。プロシージャの開始時に、開始する前に "intReadCount"を0に戻したい場合、一定の結果が得られるはずです。

更新日:

+0

Matt、いいえ私はintReadCountを参照していません。 SQL Studio Managerにログオンしています。クエリウィンドウにクエリを入力しています(実行中)。 "select reference from datetable"は、プログラムの実行中にさらに多くの行を返します。その後、私は "datetableからselect reference"を実行すると元のカウントに戻ります。これはプライマリキーが存在しないためですか?フィールド 'reference'はユニークです。 – w0051977

+0

@ w0051977これはPKの存在に関連していないので、増加したクエリをダンプし、最後のクエリと比較して、追加の行であることを強調表示することをお勧めします。これらの行を並べ替えることができます。 –

+0

Matt、私はPKを追加するときにそれが起こらないので、PKがないという事実でなければなりません。私はあなたが提案したものを試しました:datetableからの参照の選択(datetablebackupからの参照の選択)。私がプログラムを走らせる前にdatetablebackupが撮られました。クエリを実行したときに返される行はありませんでした。ありがとう。 – w0051977