への影響は私の問題ではない: 私は以下のコードを持っています。 私のコードをデバッグし、クエリをMS Accessに直接コピーすると、クエリは完璧に機能しますが、アプリケーションから実行するとテーブルに変更は加えられません。VB.Net OLEDBは、ExecuteNonQuery INSERT INTO - ここでは、データベース
私はいくつかの選択を行う前に完全にうまくいっているので、DBへの接続はOKです。
は、私はおそらく愚かな何かを作っていますが、私はそれに取り組んで多くの時間後にそれを見ることができないので、大きいです。
は、私は私のクエリでパラメータを使用する必要があります知っていると私はもともとなかったが、私は多くの人がそれを動作させるためにしようと、私の中でそれを変更し、私はこれがとにかく多くを変更しないでくださいと仮定します。
Dim cmd As New OleDbCommand
Dim sQuery As String = String.Empty
Try
cmd.CommandText = "DELETE * FROM tbl_Invoices"
cmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox("PrepareInvoicing Delete" & vbCrLf & ErrorToString())
Exit Sub
End Try
'Insert into the Invoice table the fleet info with Usage for the invoicing period selected
Try
sQuery = String.Empty
sQuery = sQuery & "INSERT INTO tbl_Invoices "
sQuery = sQuery & "SELECT tbl_Fleet.CustomerName AS CustomerName, "
sQuery = sQuery & "tbl_Fleet.CountryCode AS CountryCode, "
sQuery = sQuery & "#" & DateSerial(InvoicingYear, InvoicingMonth + 1, 0) & "# AS InvoiceDate, "
sQuery = sQuery & "tbl_Fleet.Area AS Area, "
sQuery = sQuery & "tbl_Fleet.Group AS [Group], "
sQuery = sQuery & "tbl_Fleet.Site_nm AS SiteName, "
sQuery = sQuery & "tbl_Sites.RCS AS CustomerPO, "
sQuery = sQuery & "tbl_Fleet.Site_Addr_1 AS SiteAddress1, "
sQuery = sQuery & "tbl_Fleet.Site_Addr_2 AS SiteAddress2, "
sQuery = sQuery & "tbl_Fleet.Site_Addr_ZIP AS ZIP, "
sQuery = sQuery & "tbl_Fleet.Site_Addr_cty AS City, "
sQuery = sQuery & "tbl_Fleet.model_nm AS ProductDescription, "
sQuery = sQuery & "tbl_Fleet.product_no AS ProductNumber, "
sQuery = sQuery & "tbl_Fleet.serial_no AS SerialNumber, "
sQuery = sQuery & "tbl_Fleet.hostname AS hostname, "
sQuery = sQuery & "tbl_Fleet.asset_no AS AssetNumber, "
sQuery = sQuery & "tbl_Fleet.Grid AS Grid, "
sQuery = sQuery & "tbl_Fleet.ChangeOrderID AS ChangeOrderID, "
sQuery = sQuery & "tbl_Fleet.install_date AS InstalledDate, "
sQuery = sQuery & "INT(((tbl_Fleet.install_date - temptbl_CO.ChangeOrderStartDate)/365.25)+1) AS YearInContract, "
sQuery = sQuery & "(tbl_RM.BlackClicks + tbl_RM.AccentClicks) AS BlackPages, "
sQuery = sQuery & "(tbl_RM.ColorClicks + tbl_RM.ProfessionalColorClicks) AS ColorPages "
sQuery = sQuery & "FROM tbl_Fleet, "
sQuery = sQuery & "tbl_Sites, "
sQuery = sQuery & "tbl_RM, "
sQuery = sQuery & "(SELECT DISTINCT tbl_Bases.ProductNumber, tbl_Bases.ChangeOrderID, tbl_Bases.ChangeOrderStartDate FROM tbl_Bases WHERE tbl_Bases.CustomerName = '" & mdlGlobalStuff.SelectedCustomerName & "' AND tbl_Bases.CountryCode = '" & mdlGlobalStuff.SelectedCountryCode & "') AS temptbl_CO "
sQuery = sQuery & "WHERE tbl_Fleet.CustomerName = '" & mdlGlobalStuff.SelectedCustomerName & "' "
sQuery = sQuery & "AND tbl_Fleet.CountryCode = '" & mdlGlobalStuff.SelectedCountryCode & "' "
sQuery = sQuery & "AND tbl_Fleet.LoadDate = #" & LoadFleetDate & "# "
sQuery = sQuery & "AND MONTH(tbl_RM.RMDate) = " & Month(LoadUsageDate) & " "
sQuery = sQuery & "AND YEAR(tbl_RM.RMDate) = " & Year(LoadUsageDate) & " "
sQuery = sQuery & "AND tbl_Fleet.CustomerName = tbl_Sites.CustomerName "
sQuery = sQuery & "AND tbl_Fleet.CountryCode = tbl_Sites.CountryCode "
sQuery = sQuery & "AND tbl_Fleet.Site_nm = tbl_Sites.Site_nm "
sQuery = sQuery & "AND tbl_Fleet.CustomerName = tbl_RM.CustomerName "
sQuery = sQuery & "AND tbl_Fleet.CountryCode = tbl_RM.CountryCode "
sQuery = sQuery & "AND tbl_Fleet.serial_no = tbl_RM.SerialNumber "
sQuery = sQuery & "AND tbl_Fleet.product_no = temptbl_CO.ProductNumber "
sQuery = sQuery & "AND tbl_Fleet.ChangeOrderID = temptbl_CO.ChangeOrderID "
cmd.CommandText = sQuery
cmd.ExecuteNonQuery()
MsgBox("Step 1")
Catch ex As Exception
MsgBox("PrepareInvoicing: Invoicing step 1" & vbCrLf & ErrorToString())
Exit Sub
End Try
'Update the "non aging" Bases (if Base.contractYear = 0) in the Invoice table
Try
sQuery = String.Empty
sQuery = sQuery & "UPDATE tbl_Invoices "
sQuery = sQuery & "INNER JOIN tbl_Bases ON tbl_Bases.ProductNumber = tbl_Invoices.ProductNumber "
sQuery = sQuery & "AND tbl_Bases.ChangeOrderID = tbl_Invoices.ChangeOrderID "
sQuery = sQuery & "SET tbl_Invoices.Base = tbl_Bases.BasePrice "
sQuery = sQuery & "WHERE tbl_Bases.CustomerName = '" & mdlGlobalStuff.SelectedCustomerName & "' "
sQuery = sQuery & "AND tbl_Bases.CountryCode = '" & mdlGlobalStuff.SelectedCountryCode & "' "
sQuery = sQuery & "AND tbl_Bases.ContractYear = 0 "
cmd.CommandText = sQuery
cmd.ExecuteNonQuery()
MsgBox("Step 2")
Catch ex As Exception
MsgBox("PrepareInvoicing: Invoicing step 2" & vbCrLf & ErrorToString())
Exit Sub
End Try
'Update the "aging" Bases (if Base.contractYear <> 0) in the Invoice table
Try
sQuery = String.Empty
sQuery = sQuery & "UPDATE tbl_Invoices "
sQuery = sQuery & "INNER JOIN tbl_Bases ON tbl_Bases.ProductNumber = tbl_Invoices.ProductNumber "
sQuery = sQuery & "AND tbl_Bases.ChangeOrderID = tbl_Invoices.ChangeOrderID "
sQuery = sQuery & "AND tbl_Bases.ContractYear = tbl_Invoices.YearInContract "
sQuery = sQuery & "SET tbl_Invoices.Base = tbl_Bases.BasePrice "
sQuery = sQuery & "WHERE tbl_Bases.CustomerName = '" & mdlGlobalStuff.SelectedCustomerName & "' "
sQuery = sQuery & "AND tbl_Bases.CountryCode = '" & mdlGlobalStuff.SelectedCountryCode & "' "
cmd.CommandText = sQuery
cmd.ExecuteNonQuery()
MsgBox("Done")
Catch ex As Exception
MsgBox("PrepareInvoicing: Invoicing step 3" & vbCrLf & ErrorToString())
Exit Sub
End Try
接続文字列の内容は本当ですか?これらの症状は、そこに何か悪いとプロジェクトファイルの構成に強い示唆しています。あなたは接続紐を掲示できますか? (もちろん、Sql注入と解析の問題は次のようになります) – Steve
初心者として、あなたのテーブルに簡単に挿入することができますか?あなたが接続の問題かクエリ構文の問題かどうかを知る方法です... ExecuteNonQuery()は、影響を受ける行の数を示す整数を返します。この値を表示しようとします。 –
'ExecuteNonQuery'を呼び出すと可能な結果は3つだけです。例外をスローすることができます。その場合、何かが間違っていました。ゼロを返すことができます。この場合、保存するための変更はありません。 0以外の値を返すことができます。この場合、保存する変更があり、保存されました。あなたの場合はどちらですか?多くの場合、それはそれは人が単に間違った場所におよび/またはデータの間違った時に見ている必要がありますようにすべてが動作していることを意味し、オプション3、ではないということ。その場合は、私は単一のプロパティを設定することを含む適切な答えを提供することができます。 – jmcilhinney