0

他のテーブルの多くの外部キーを持つテーブルstudent_record_databaseに挿入して更新するためのコードを作成しました。

このコードを実行している間、コンボボックスから選択されたテキストデータを受け入れず、エラーの無効な数、整合性制約、およびDTpickerも、カスタム形式を設定しましたが、指定された日付を受け入れません。

以下に私のコードを示します。コンボボックスにテキストを表示するのに問題があります。

<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. 
4

2 に答える 2

1

STUDENT_RECORD_DATABASE の構造と何を更新しているのかわからないまま質問に答えるのはちょっと難しいですが、調べられることがいくつかあります。

まず、このように Oracle に日付を挿入するときは、日付列で TO_DATE() 関数を使用する必要があります。いえDATE_OF_BIRTH

次に、すべての外部テーブル キー制約が更新によって満たされていることを確認します。

ROLLNO主キーの場合は更新する必要はありません。

最後に、更新しようとしているデータが文字列 (例: VARCHAR2) 列のサイズよりも大きくないことを確認してください。また、これらの一部は文字列列でなければならず、引用符で囲まれていません。例CONTACT CONTACT1 CONTACT2CARD_NO

于 2013-01-02T09:07:22.513 に答える
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") & " ' ),"
于 2013-01-02T17:31:07.173 に答える