2017-05-01 62 views
0

我正在編寫一個小型Windows應用程序,我的任務是允許系統的用戶通過存儲過程添加,刪除,更新和查看記錄。我能夠查看和更新​​現有記錄,但我無法正確添加記錄。添加功能添加PartNo和數量,但不添加PartName或製造商。當我添加新零件後刷新表格時,它們顯示爲零。這是我的下面的添加子例程和我的存儲過程。我正在使用Oracle SQL Developer和Visual Studio 2015.我的語法是否正確,或者我缺少使add方法排除PartName和Manufacturer的內容。通過Windows表單添加到Oracle數據庫

,增加了記錄的部分表

Private Sub addPart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles addPart.Click 

     Dim cmd As New OracleCommand("Garage.ADDPART", Form1.Connect()) 
     cmd.CommandType = CommandType.StoredProcedure 
     cmd.Parameters.Add("@PARTNO", Val(txtAddPartNo.Text)) 
     cmd.Parameters.Add("@PARTNAME", Val(txtAddPartName.Text)) 
     cmd.Parameters.Add("@MANUFACTURER", Val(txtAddManufacturer.Text)) 
     cmd.Parameters.Add("@QUANTITY", Val(txtAddQuantity.Text)) 
     Try 
      cmd.ExecuteNonQuery() 
      MsgBox("Record Added") 
     Catch ex As Exception 
      MsgBox(ex.Message) 
     End Try 
    End Sub 

// ADDPART存儲過程

create or replace procedure ADDPART(
new_partno PART.PARTNO%type, 
new_partname PART.PARTNAME%type, 
new_manufacturer PART.MANUFACTURER%type, 
new_quantity PART.QUANTITY%type) 
as 
begin insert into PART 
(PARTNO, PARTNAME, MANUFACTURER, QUANTITY) 
values 
(new_partno, new_partname, new_manufacturer, new_quantity); 
Commit; 
exception 
when dup_val_on_index then 
raise_application_error(-20001, 'Product already exists'); 
when others then 
raise_application_error(-20011, sqlerrm); 
END ADDPART; 
+0

鑑於VB調用存儲過程中描述的數據類型,我假設它們都是數字,因爲您正在使用'val()'函數將它們從文本轉換爲數字。我的猜測是,零件名稱和製造商中的文本正在轉換爲零。你可以發佈部分創建表腳本? –

+0

我不明白你的意思 – GreenCoder

+0

在你的代碼中,你使用'val()'函數將每個文本框中的文本轉換爲數字,在你的問題中顯而易見的是'txtAddPartName.Text'和' txtAddManufacturer.Text'正在轉換爲編號。我很想知道part table列是數字還是varchar2列,所以我問你是否可以發佈你的表格腳本作爲part table。我懷疑這些文本框中的數據不是數字,而是轉換爲零,我正在尋找證據。 –

回答

0

鑑於對零件名稱和製造商的表列VARCHAR2 //子程序,更改過程調用存儲過程如下:

Private Sub addPart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles addPart.Click 

    Dim cmd As New OracleCommand("Garage.ADDPART", Form1.Connect()) 
    cmd.CommandType = CommandType.StoredProcedure 
    cmd.Parameters.Add("@PARTNO", Val(txtAddPartNo.Text)) 
    cmd.Parameters.Add("@PARTNAME", txtAddPartName.Text) 
    cmd.Parameters.Add("@MANUFACTURER", txtAddManufacturer.Text) 
    cmd.Parameters.Add("@QUANTITY", Val(txtAddQuantity.Text)) 
    Try 
     cmd.ExecuteNonQuery() 
     MsgBox("Record Added") 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 
End Sub 

刪除val()功能從txtAddPartName.texttxtAddManufacturer.text

+0

它的工作完美。非常感謝你。我現在接受你的答案,並將其標記爲已解決。 – GreenCoder

相關問題