数据库sql server和vb 6中未保存的日期

时间:2014-05-07 16:36:07

标签: sql-server tsql vb6

您好我正在使用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

2 个答案:

答案 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语句转换为存储过程,并使用适当的数据类型设置参数以传递输入值。