设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1369|回复: 9
打印 上一主题 下一主题

[窗体] 日期代码的请教

[复制链接]
跳转到指定楼层
1#
发表于 2010-4-29 12:56:49 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 简 于 2010-4-29 19:51 编辑


我的本义是,在保存记录时先检查表中是否有品号,工件名称,设计日期都一样的记录,如果有,就先删除这些记录,然后再保存新记录。

现在的结果是,比如说,如果品号,工件名称都一样的记录,能够正确删除,但如果是品号,工件名称,设计日期都一样的记录,就没有反应了。

显然日期没有起作用,错误出在设计日期上。

这是怎么回事呢,日期上的代码要如何修改呢?

Dim cn As New ADODB.Connection

Dim rs As New ADODB.Recordset


Dim sql As String

        

sql = "DELETE * FROM tblBOM where "


sql = sql & "
品号 = '" & Me.txtpinghao & "'and "


sql = sql & "
工件名称 ='" & DLookup("工件名称", "tblgongjian", "[工件代号]='" & Left(lngKM, 2) & "'") & "' and "


sql = sql & "
设计日期 =" & "#" & Format(Me.Dtpriqi, "Medium date") & "#"



CurrentDb.Execute sql

   

Set cn = CurrentProject.Connection

        

sql = "select * from tblBOM"


rs.Open sql, cn, adOpenKeyset, adLockPessimistic, 1


rs.AddNew

        ……
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
10#
发表于 2010-5-1 13:00:29 | 只看该作者
本帖最后由 红尘如烟 于 2010-5-1 13:02 编辑

日期还是有问题的原因,一是你要从窗体的设计视图中把Value属性中的时间部分去掉,另一个是要对表中已有数据处理一下,因为你的表中已有数据极有可能也包含了时间
第二个问题不是不用Connection,而是用的当前数据库的Connection,注意下面加粗的字体,这样直接引用当前数据库的连接,就不用再去定义一个新的连接了:
rst.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
9#
 楼主| 发表于 2010-5-1 01:13:03 | 只看该作者
红尘,我把你的代码代入我的库中测试,没有达到我所想要的效果。
我分析,问题还是出现在设计日期=#" & Me.Dtpriqi & "#"上。正如你所说的,日期控件的值里面包含了时间,自然是取不到相等的值了。
如果是用我4楼的代码,则能达到我所想要的效果。
于是我把你的代码修改了一下,即
strSQL = "SELECT * FROM tblBOM WHERE 品号='" & Me.txtpinghao & "' AND 设计员='" & Me.cboGongyi & "' AND year(设计日期)='" & Format(Me.Dtpriqi, "YY") & "' AND month(设计日期)='" & Format(Me.Dtpriqi, "MM") & "' AND day(设计日期)='" & Format(Me.Dtpriqi, "DD") & "'"

结果也不能获得我想要的效果,很奇怪。这是怎么回事呢?

另外我还想问,为什么不用连接Connection呢?为什么关闭ADO后还要将各控件值设为NULL呢?
8#
发表于 2010-4-30 14:24:57 | 只看该作者
日期不正常的原因是日期控件的值里面包含了时间,自然是取不到相等的值了,另外你这个既然不是通过绑定窗体来编辑记录的,不一定非要去删除它再添加,可以根据条件直接打开限定记录集,如果记录集不为空,说明记录已存在,就直接修改这条记录就行了
  1. Private Sub Command0_Click()
  2.     Dim strSQL As String
  3.     Dim rst As New ADODB.Recordset
  4.    
  5.     strSQL = "SELECT * FROM tblBOM WHERE 品号='" & Me.txtpinghao & "' AND 设计日期=#" & Me.Dtpriqi & "#"
  6.     rst.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  7.     If rst.EOF Then rst.AddNew    '如果记录不存在则新增,否则直接在已有记录中修改
  8.     rst!品号 = Me.txtpinghao
  9.     rst!设计员 = IIf(Me.cboGongyi = "", Null, Me.cboGongyi)
  10.     rst!设计日期 = Me.Dtpriqi
  11.     rst!备料尺寸 = Me.txtbC & "×" & Me.txtbK & "×" & Me.txtbH
  12.     rst!件数 = 1
  13.     rst!单重 = Me.txtZ
  14.     rst!总重 = rst!件数 * rst单重
  15.     rst.Update
  16.     rst.Close
  17.     Me.txtpinghao = Null
  18.     Me.cboGongyi = Null
  19.     Me.Dtpriqi = Date
  20.     Me.txtbC = Null
  21.     Me.txtbK = Null
  22.     Me.txtbH = Null
  23.     Me.txtZ = Null
  24.     MsgBox "保存完毕"
  25.    
  26. End Sub
复制代码
7#
 楼主| 发表于 2010-4-30 07:11:17 | 只看该作者
问题未得到有效解决,不沉不沉。
6#
 楼主| 发表于 2010-4-29 21:13:29 | 只看该作者
啊,楼上的朋友,那你说我该怎么修改呢,请你看我上传的例子,帮我修改,好吗?
5#
发表于 2010-4-29 21:05:53 | 只看该作者
注意空格,为什么要format,抓窗体上来。
还有一会用ado,一会用dao干什么?cn也多余,CurrentProject.Connection直接用好了。
还有。。。晕了
4#
 楼主| 发表于 2010-4-29 20:59:49 | 只看该作者
本帖最后由 简 于 2010-4-29 21:11 编辑

费了好大的劲,好像应该这样写才对:

     sql = "DELETE * FROM tblBOM where "
        sql = sql & "品号 = '" & Me.txtpinghao & "'and "
        sql = sql & "工件名称 ='" & DLookup("工件名称", "tblgongjian", "[工件代号]='" & Left(lngKM, 2) & "'") & "' and "
        sql = sql & "Year([设计日期]) = " & Year(Me.Dtpriqi) & " And "
        sql = sql & "Month([设计日期]) = " & Month(Me.Dtpriqi) & " And "
        sql = sql & "Day([设计日期]) = " & Day(Me.Dtpriqi)

不知日期部分我想合为一行,不知该如何写才好呢?日期部分的代码太搅人了。

我把测试通过的数据库传上来请大家看看,看是不是真的通过了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
3#
 楼主| 发表于 2010-4-29 19:51:36 | 只看该作者
555,还是不行呢~~~

点击这里给我发消息

2#
发表于 2010-4-29 15:42:55 | 只看该作者
更改这句试试看:
sql = sql & "Format([设计日期], 'Medium date') =" & Format(Me.Dtpriqi, "Medium date")
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-17 23:53 , Processed in 0.086093 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表