次のコードを使用して、アクセス データベース内の次の一意の注文番号を計算しています。ServerDB は「System.Data.OleDb.OleDbConnection」です
Dim command As New OleDb.OleDbCommand("", serverDB)
command.CommandText = "SELECT max (ORDERNO) FROM WORKORDR"
iOrder = command.ExecuteScalar()
NewOrderNo = (iOrder + 1)
その後、(別の DB 接続を使用して) WORKORDR を作成すると、コードは新しい「次の注文番号」を取得しません。
例えば
iFoo = NewOrderNo
CreateNewWorkOrderWithNumber(iFoo)
iFoo2 = NewOrderNo
iFoo と iFoo2 の両方に同じ値を返します。
「NewOrderNo」関数の一部として、serverDBを閉じてから再度開くと、機能します。iFoo と iFoo2 が正しいでしょう。
この状況で、接続を閉じて再度開くことなく、「System.Data.OleDb.OleDbConnection」を強制的にデータベースを更新する方法はありますか。たとえば、serverdb.refresh または serverdb.FlushCache に相当するものはありますか
注文の作成方法。 注文を作成した後にトランザクションを更新しなかったことが原因ではないかと思いました. 注文の作成に XSD を使用しています。レコードの作成に使用するコードは...
Sub CreateNewWorkOrderWithNumber(ByVal iNewOrder As Integer)
Dim OrderDS As New CNC
Dim OrderAdapter As New CNCTableAdapters.WORKORDRTableAdapter
Dim NewWorkOrder As CNC.WORKORDRRow = OrderDS.WORKORDR.NewWORKORDRRow
NewWorkOrder.ORDERNO = iNewOrder
NewWorkOrder.name = "lots of fields filled in here."
OrderDS.WORKORDR.AddWORKORDRRow(NewWorkOrder)
OrderAdapter.Update(NewWorkOrder)
OrderDS.AcceptChanges()
End Sub