设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
楼主:
打印 上一主题 下一主题

[表] 如何用SQL或其它方法更新表

[复制链接]
11#
 楼主| 发表于 2012-4-19 21:04:11 | 只看该作者
我想请教一下避免记录重复的问题。
以上述附件中的AA表为例,同一天,同一个产品代号,同一台机床,同一个班次,同一个班组,同一个刀数,不允许有相同的完成数量。
比如说,同一天为3月6日,产品代号为A042在29号机床上,A班组的白班,用9刀完成了2400个产品数量,如果再输入3月6号,A042,29号机床,A班组,白班,9刀数,2400,则就重复了。

如何避逸这种情况呢。

我曾经用Dlookup来解决重复记录,但DlookUP的条件项好像最多只能为4项,超过4项条件就无效了。
12#
发表于 2012-4-19 21:08:10 | 只看该作者
本帖最后由 todaynew 于 2012-4-19 21:13 编辑
简 发表于 2012-4-19 21:04
我想请教一下避免记录重复的问题。
以上述附件中的AA表为例,同一天,同一个产品代号,同一台机床,同一个 ...


办法有若干种,最简单的就是用Dcount或者Dlookup函数确认是否有1条这样的记录存在,如果存在就不做追加操作。

没有听说有条件的项数有什么限制,你写个几十项都没问题,除非你写错球了。{:soso_e120:}

再告诉你一个更为直接而简单的办法,就是将若干字段组合为一个唯一性索引,这是从后台进行根本性的限制。
13#
 楼主| 发表于 2012-4-19 21:17:33 | 只看该作者
我还想请教个问题,即在不同子窗体中选中相同机床号的记录。

如附件的主窗体中有白班,中班,夜班三个子窗体,当我在白班子窗体中选中29号机床,则中班和夜班中有29号机床的记录就高亮显示,但子窗体并不筛选。

请问这种效果能实现吗?

本帖子中包含更多资源

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

x
14#
发表于 2012-4-19 21:22:11 | 只看该作者
简 发表于 2012-4-19 21:17
我还想请教个问题,即在不同子窗体中选中相同机床号的记录。

如附件的主窗体中有白班,中班,夜班三个子 ...

好办呀,依据选中值动态设置背景色、或则选中或则条件格式皆可。
15#
 楼主| 发表于 2012-4-19 21:26:21 | 只看该作者
todaynew 发表于 2012-4-19 21:08
办法有若干种,最简单的就是用Dcount或者Dlookup函数确认是否有1条这样的记录存在,如果存在就不做追加 ...

我的代码曾这样写:
Dim same1

same1 = DLookup("完成数量", "AA", "[生产日期]+[产品代号]+[班组]+[班次]+[刀数]+[单价]+[完成数量]='" & Me.生产日期 + Me.产品代号 + Me.班组 + Me.班次 + Me.刀数 + Me.单价 + Me.完成数量) & "'")

    If IsNull(same1) = False Then

        strMsg = "记录重复,请重新输入。"
        ……
  endif

注意,我增加了一项[单价]。除了单价是数字类型外,其余都是字符类型。

运行中,不管我是否输入相同记录时,都提示我输入了相同记录,我不知我的上述代码错在哪里呢。
16#
 楼主| 发表于 2012-4-19 21:30:24 | 只看该作者
todaynew 发表于 2012-4-19 21:22
好办呀,依据选中值动态设置背景色、或则选中或则条件格式皆可。

你这样说我都知道,但是叫我处理,我就是不知如何处理呀,好汉呀,给个例子让我开开窍,好不好。
17#
发表于 2012-4-19 21:33:41 | 只看该作者
本帖最后由 todaynew 于 2012-4-19 21:41 编辑
简 发表于 2012-4-19 21:17
我还想请教个问题,即在不同子窗体中选中相同机床号的记录。

如附件的主窗体中有白班,中班,夜班三个子 ...


在白班窗体的成为当前时间中写:
Private Sub Form_Current()
    Dim n As Long
    Dim i As Long
    Dim frm As Form
    On Error Resume Next
    Set frm = Me.Parent.Child2.Form
    n = Me.机床.Value
    For i = 1 To frm.RecordsetClone.RecordCount
        frm.SelTop = i
        If frm.Controls("机床").Value = n Then
            frm.SelWidth = 9
            Exit For
        End If
    Next
End Sub

本帖子中包含更多资源

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

x
18#
发表于 2012-4-19 21:40:27 | 只看该作者
简 发表于 2012-4-19 21:26
我的代码曾这样写:
Dim same1

用Cstr强制转换非文本型字段和控件值后试试
19#
 楼主| 发表于 2012-4-19 21:45:28 | 只看该作者
todaynew 发表于 2012-4-19 21:33
在白班窗体的成为当前时间中写:
Private Sub Form_Current()
    Dim n As Long

    Set frm = Me.Parent.Child2.Form

这段代码无法运行,出错。
20#
 楼主| 发表于 2012-4-19 21:50:54 | 只看该作者
todaynew 发表于 2012-4-19 21:40
用Cstr强制转换非文本型字段和控件值后试试

我用过Cstr,不起作用。

我曾这样写过:
same1 = DLookup("完成数量", "AA", "[生产日期]+[产品代号]+[班组]+[班次]+[刀数]+[单价]+[完成数量]='" & Me.生产日期 + Me.产品代号 + Me.班组 + Me.班次 + Me.刀数 + Cstr(Me.单价) + Me.完成数量) & "'")

[单价]上曾这样写过,Cstr([单价]),但也不起作用。

实在无辙了。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-21 16:53 , Processed in 0.124834 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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