您好我正在使用SQL Server和VB 6进行项目
我的项目在图书馆,最准确的是我的租赁表格。 RENT AND DUE DATE的日期未保存在我的数据库中
它显示在Listview中,但在我的表中保存为1/1/1900。
我已多次更改数据类型,但仍未保存在我的数据库中。
代码:
Private Sub Form_Load()
txtRent_Date.Text = Format(Now, "MM/ dd/ yyyy")
txtDue_Date.Text = Format(Now, "MM/ dd/ yyyy")
End Sub
Private Sub Command1_Click()
If Len(dcbBook.Text) = 0 Then
MsgBox "Select a book First", vbOKOnly + vbInformation, "Alert"
Else
' Save to Rental
With Adodc1.Recordset
.AddNew
.Fields("Customer_id") = dcbCustomer.BoundText
.Update
End With
' End Saving
txtID.Text = Adodc1.Recordset.Fields("Rental_id").Value
' Save to Rental Copies
For X = 0 To ListView1.ListItems.Count - 1
Set CN = New ADODB.Connection
CN.CursorLocation = adUseClient
CN.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Library;Data Source=SOUMEIYA-MSI\SQLEXPRESS"
CN.Open
strsql = "INSERT INTO Rental_Copies(Rental_id,Copies_id,Rent_Date,Due_Date)Values(" & txtID.Text & "," & ListView1.ListItems(X + 1) & "," & txtRent_Date.Text & "," & txtDue_Date.Text & ")"
Set rs = CN.Execute(strsql)
Next
MsgBox "Book Rented successfully !", vbOKOnly + vbInformation, "Save"
End If
End Sub
答案 0 :(得分:0)
您没有在SQL字符串中引用日期:"," & txtRent_Date.Text & ","
,因此您尝试插入值05/07/2014
,该值被解释为带有两个分区的数学表达式; < / p>
select 05/07/2014 == 0
将0
投放到日期为1900-01-01 00:00:00.000
。
在语句中引用字符串/日期或更好地使用参数化查询(在yourt文本框中放置`,看看会发生什么)。
答案 1 :(得分:0)
Alan K是对的。要解决此问题,请替换插入语句的这一部分...
& "," & txtRent_Date.Text & "," & txtDue_Date.Text & ")"
...与
& ",'" & txtRent_Date.Text & "','" & txtDue_Date.Text & "')"
在您的应用程序中嵌入sql是一种不好的做法,原因有很多。您应该将嵌入的insert语句转换为存储过程,并使用适当的数据类型设置参数以传递输入值。