2013-01-02 17 views
0

我寫了代碼插入並更新表student_record_database具有許多其他表的外鍵。如何在組合框中顯示文本但引用ID字段?

雖然運行此代碼是不接受從組合框中選中的文本數據和給出錯誤無效號碼,完整性約束和DTpicker也是不接受給定的日期,雖然我已經設置自定義格式。

這裏的below.I時遇到的問題,以顯示在組合框中的文字我的代碼。

<code> 
Private Sub save_Click() 
If Val(COMBO4) = 0 Then 
SQL = "INSERT INTO STUDENT_RECORD_DATABASE(ROLLNO,FIRST_NAME,MIDDLE_NAME,LAST_NAME,CONTACT,CONTACT1,CONTACT2,ADDRESS,GRADE,DIVID,BLOOD_GROUP,HID,DATE_OF_BIRTH,TRANSPORT,SNAME,MEAL,BUSNO,RUTNO,DID,AID,CARD_TYPE,CARD_NO)" 

    SQL = SQL + "VALUES(" & Val(COMBO4) & ",'" & Trim(Text2) & "', '" & Trim(Text3) & "', '" & Trim(Text4) & "', " & Val(Text5) & ", " & Val(Text6) & ", " & Val(Text7) & ", '" & Trim(Text8) & "', '" & Trim(Combo1) & "','" & Val(Combo2) & "'," 
SQL = SQL + " '" & Trim(Combo3) & "' ,'" & Val(Combo9) & "','" & DTPicker1.Value & "'," 
SQL = SQL + " '" & Trim(Combo10) & "' ,'" & Combo5.Text & "' ,'" & Trim(Combo11) & "' ,'" & Combo6.Text & "' ,'" & Val(Combo12) & "' ,'" & Val(Combo7) & "','" & Val(Combo8) & "'," 

SQL = SQL + " '" & Trim(Combo13) & "' ," & Text11.Text & ") " 

    Set RES = CON.Execute(SQL) 
MsgBox ("RECORD INSERTED") 
Else 
SQL = "UPDATE STUDENT_RECORD_DATABASE SET " 
SQL = SQL + "ROLLNO= " & Val(COMBO4) & "," 
SQL = SQL + "FIRST_NAME= '" & Trim(Text2) & "'," 
SQL = SQL + "MIDDLE_NAME= '" & Trim(Text3) & "'," 
SQL = SQL + "LAST_NAME= '" & Trim(Text4) & "'," 
SQL = SQL + "CONTACT=" & Val(Text5) & "," 
SQL = SQL + "CONTACT1=" & Val(Text6) & "," 
SQL = SQL + "CONTACT2=" & Val(Text7) & "," 
SQL = SQL + "ADDRESS= '" & Trim(Text8) & "'," 
SQL = SQL + "GRADE='" & Trim(Combo1) & "'," 
SQL = SQL + "DIVID='" & Val(Combo2) & "'," 
SQL = SQL + "BLOOD_GROUP='" & Trim(Combo3) & "'," 
SQL = SQL + "HID='" & Val(Combo9) & "'," 
SQL = SQL + "DATE_OF_BIRTH=(' " & DateValue(DTPicker1.Value) & " ')," 
SQL = SQL + "TRANSPORT='" & Trim(Combo10) & "'," 
SQL = SQL + "SNAME='" & Trim(Combo5) & "'," 
SQL = SQL + "MEAL='" & Trim(Combo11) & "'," 
SQL = SQL + "BUSNO='" & Trim(Combo6) & "'," 
SQL = SQL + "RUTNO=" & Val(Combo12) & "," 
SQL = SQL + "DID='" & Val(Combo7) & "'," 
SQL = SQL + "AID='" & Val(Combo8) & "'," 
SQL = SQL + "CARD_TYPE='" & Trim(Combo13) & "'," 
SQL = SQL + "CARD_NO=" & Val(Text11) & "" 
SQL = SQL + "WHERE ROLLNO= " & Val(COMBO4) & "" 
MsgBox ("RECORD UPDATED") 
End If 
End Sub 
</code> 
Error occurred is invalid month,integrity constraint-parent key not found,invalid number. 
+0

你的代碼,您的問題沒有作出任何意義嘗試elobrate –

+0

我寫的代碼插入到和更新表student_record_database具有其它tables.While的許多外國鍵運行這段代碼是不接受從選擇的文本數據組合框和錯誤無效號碼,完整性約束,DTpicker也不接受給定的日期,雖然我已經設置了自定義格式 –

回答

1

這是有點難以回答您不知道STUDENT_RECORD_DATABASE的結構,您要更新什麼的問題,但也有一些事情你可以看看。

首先,插入日期時,到Oracle這樣你應該使用TO_DATE()函數的日期列。即DATE_OF_BIRTH

下一頁確保所有外國表鍵約束是通過您的更新滿足。

沒有必要更新ROLLNO如果它是你的主鍵。

最後確保沒有您要更新數據的更大該字符串的大小(例如VARCHAR2)列。另外,其中一些必須是字符串列,並且不受引號限制。例如。 CONTACTCONTACT1CONTACT2CARD_NO

0

您需要使用組合框.ItemData屬性來存儲你的價值的ID字段:

Do While Not myRecordset.EOF 
    myCombo.AddItem myRecordset("MyFieldString").Value 
    myCombo.ItemData(myCombo.NewIndex) = myRecordset("MyFieldID").Value 
    myRecordset.MoveNext 
Loop 

來指代選擇的組合值的.ItemData屬性:

"CARD_TYPE='" & Trim(Combo13.ItemData(Combo13.ListIndex)) & "'," 

由於對於數據格式問題,不確定有關Oracle,但對於SQL Server,您必須格式化日期值:

"DATE_OF_BIRTH=(' " & Format$(DTPicker1.Value, "yyyy-mm-dd") & " ')," 
相關問題