[VB6 ] 数据库写入

楼主: chrisjon (开车/旅游)   2013-11-22 14:57:03
请问黄色和绿色部份一样
日期有记进数据库,但车号却没记进去,是哪里有问题吗?
**
界面简介:
车号combo
三个记录日期的text(年/月/日)
一个公升text
一个价格text
一里程数text
四个cammend
一个adodc及grid
**
所有的text都成功的记录进数据库里,但只有combo的记录失败
刚稍微修改了一些内容
把原本以text用DataSource及DataField来跟数据库连结
修改成
全部以Adodc.Record.Field(i) = val(text.text)的模式写进access里
利用 逐行 功能来看,跑到车牌那里时,确定 rs.Fields(0) 也有写进车牌号码了
但是Record.update之后,
每一个都成功写进数据库了,唯独车号写不进去
**
再次测试,跳出msgbox确认是否记录时,车号有出现在DataGrid里
但是按下"确定"按钮后,车牌号码却消失了…
=================================
Private Sub Form_Load()
'车辆选单设定
truck(0) = "XS-001"
truck(1) = "XS-002"
truck(2) = "XS-003"
truck(3) = "XS-004"
truck(4) = "XS-005"
cboTruckPlate.Clear
For i = 0 To 4
cboTruckPlate.AddItem (truck(i))
Next
cboTruckPlate.ListIndex = 0
'按钮名称设定
cmdAddNew.Caption = "新增"
cmdSave.Caption = "储存"
cmdDelete.Caption = "删除"
cmdFinish.Caption = "结束"
'锁定输入格
InputLocked
***
Private Sub cmdSave_Click()
'输入的资料全集合在字串里
'车号必填
temp = ""
If cboTruckPlate.ListIndex = -1 Then
return_msg = MsgBox("车号忘了选", 32, "请选择车号")
cboTruckPlate.SetFocus
Exit Sub
Else
'记录车号
tPlateRecord = truck(cboTruckPlate.ListIndex)
AdoDiesel.Recordset.Fields(0) = tPlateRecord
temp = "车号:" & txtTruckPlate.Text & vbCrLf
End If
'日期必填
If txtYear.Text <> "" And txtMonth.Text <> "" And txtDay.Text <> "" Then
'记录日期
tDate = Format(Str(txtYear.Text), "0000") + "/" +
Format(Str(txtMonth.Text), "00") + "/" + Format(Str(txtDay.Text), "00")
AdoDiesel.Recordset.Fields(1) = tDate
temp = temp & "日期:" & Str(txtYear.Text) & "年" & Str(txtMonth.Text) & "
月" & Str(txtDay.Text) & "日" & vbCrLf
Else
return_msg = MsgBox("日期没输入", 32, "请输入日期")
txtYear.SetFocus
Exit Sub
End If
'加油量必填
If txtLiter.Text = "" Then
return_msg = MsgBox("今天加了几公升?", 32, "请输入加油量")
txtLiter.SetFocus
Exit Sub
Else
AdoDiesel.Recordset.Fields(2) = Val(txtLiter.Text)
temp = temp & "公升:" & Str(txtLiter.Text) & vbCrLf
End If
If txtPrice.Text <> "" Then
AdoDiesel.Recordset.Fields(3) = Val(txtPrice.Text)
temp = temp & "价格:" & Str(txtPrice.Text) & vbCrLf
End If
If txtMileage.Text <> "" Then
AdoDiesel.Recordset.Fields(4) = Val(txtMileage.Text)
temp = temp & "里程数:" & Str(txtMileage.Text)
End If
If temp <> "" Then
return_value = MsgBox(temp, 33, "以下资料是否正确") '检测资料是否正确
If return_value = 1 Then '资料正确即存入
AdoDiesel.Recordset.Update
AdoDiesel.Recordset.Update
AdoDiesel.Refresh
Else
return_msg = MsgBox("放弃储存,请重新输入", 48, "资料未存入")
AdoDiesel.Refresh
End If
End If
AdoDiesel.Recordset.Update
'再重整并移动到最后
AdoDiesel.Refresh
AdoDiesel.Recordset.MoveLast
'输入结束,输入格锁定
Form_Load
SetFilesWidth
cmdAddNew.SetFocus
AdoDiesel.Recordset.MoveLast
End Sub
作者: johnpage (johnpage)   2012-01-22 17:56:00
看不出是何种数据库索引<>值
作者: EShensh (萧易玄)   2012-01-24 23:04:00
你 FormLoad 中的 truck 变量范围是在哪边? 全域吗?truck(cboTruckPlate.ListIndex) 这边怎么不直接抓Combo值
楼主: chrisjon (开车/旅游)   2012-01-25 01:50:00
另外设一个模组,在那里设定Public truck(4) As String*6不好意思,不是很懂抓combo值
作者: johnpage (johnpage)   2012-01-25 05:37:00
请确认数据库是不是有值,只是不是自己想的值
作者: ClubT (小喬)   2012-01-25 11:55:00
你输入的车号是否满足数据库车号的字段?
作者: johnpage (johnpage)   2012-01-26 12:41:00
索引
楼主: chrisjon (开车/旅游)   2012-01-26 13:15:00
不是很明白,请问可以简单解说一下吗? 谢谢
作者: johnpage (johnpage)   2012-01-26 17:44:00
不要先使用阵列,先直接填字串

Links booklink

Contact Us: admin [ a t ] ucptt.com