设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[Access本身] 如何求证两个值是否在表的一条记录已经存在?

[复制链接]
跳转到指定楼层
1#
发表于 2006-6-13 23:43:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
表 temptobom, 字段....

    var = DLookup(PartNumber, "temptobom", EquationPartNumber = Epn And toNumber = Num)

    If Not IsNull(var) Then
        If MsgBox("此部件已添加,需要继续编辑吗?", 4) = 7 Then
         
            Exit Sub
        End If

    Else
        DoCmd.SetWarnings False

            DoCmd.OpenQuery "qrytointo"
         
            DoCmd.RunSQL "INSERT INTO temptobom  SELECT temp.* FROM temp" _
                & " WHERE (((temp.toNumber)='" & Num & "') AND ((temp.EquationPartNumber)='" & Epn & "'));"
     
            DoCmd.RunSQL "DELETE temp.* FROM temp;"
        DoCmd.SetWarnings True
    End If


但总得不到想要的结果,var永远不为null
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2006-6-13 23:44:00 | 只看该作者
请教高招
3#
 楼主| 发表于 2006-6-14 00:07:00 | 只看该作者
帮帮我!
4#
发表于 2006-6-14 00:24:00 | 只看该作者
请检查DLOOLUP 正确书写


DLookup 函数用于从指定记录集(一个[url=mkMSITStore:C:\Program%20Files\Microsoft%20Office\OFFICE11\2052\vbaac10.chm::/html/acfctDLookup.htm#]域[/url])获取特定字段的值。可以在 Visual Basic、[url=mkMSITStore:C:\Program%20Files\Microsoft%20Office\OFFICE11\2052\vbaac10.chm::/html/acfctDLookup.htm#]宏[/url]、查询表达式、窗体或报表上的[url=mkMSITStore:C:\Program%20Files\Microsoft%20Office\OFFICE11\2052\vbaac10.chm::/html/acfctDLookup.htm#]计算控件[/url]中使用 DLookup 函数。


使用 Dlookup 函数可以显示不在窗体或报表记录源中的字段值。例如,假定有一个基于“订单明细”表的窗体,显示“订单ID”、“产品ID”、“单价”、“数量”和“折扣”字段。而“产品名称”字段位于另一个表 (“产品”表)中。通过在计算控件中使用 Dlookup 函数,可以在同一窗体上显示“产品名称”。


DLookup(expr, domain, [criteria])


DLookup 函数具有下列参数:














参数


说明





expr


一个表达式,用于标识需要返回其值的字段。它既可以是用于标识表或查询中字段的字符串表达式,也可以是以该字段上的数据进行计算的表达式。在 expr 中,可以包括表中字段的名称、窗体上的控件、常量或函数。如果 expr 包含函数,那么它可以是内置的,也可以是用户定义的,但不能是另一个域聚合函数或 SQL 聚合函数。





domain


字符串表达式,代表组成域的记录集。可以是表名称或不需要参数的查询名称。





criteria


可选的字符串表达式,用于限制 DLookup 函数执行的数据范围。例如,criteria 通常等价于 SQL 表达式中的 WHERE 子句,只是不含 WHERE 关键字。如果忽略 criteria,DLookup 函数将在整个域范围内计算 expr。任何包含在 criteria 中的字段必须同时也是 domain 中的字段,否则 Dlookup 函数将返回 Null



说明


DLookup 函数将基于 criteria 中指定的信息返回单个字段的值。虽然 criteria 是可选参数,但如果不给 criteria 提供值,Dlookup 函数将返回域中的一个随机值。


如果没有记录满足 criteria,或者 domain 中没有记录,DLookup 函数将返回 Null


如果有多个字段满足 criteria,DLookup 函数将返回第一个匹配字段。所以应该指定条件以确保 DLookup 函数返回的字段值是唯一的。可以在条件中使用主键值,在下例中,使用
  1. [EmployeeID]
复制代码
来确保 DLookup 函数返回唯一的值:
  1. Dim varX As Variant


  2. varX = DLookup("[LastName]", "Employees", "[EmployeeID] = 1")
复制代码


               


无论是在宏、模块、查询表达式中,还是在计算控件中使用 DLookup 函数,都必须仔细地构造 criteria 参数,以确保能够正确地进行计算。


在查询的“条件”行、查询的计算字段表达式中或更新查询的“更新到”行中均可以使用 DLookup 函数来指定条件。


如果需要显示的字段不在窗体或报表所基于的记录源中,也可以在窗体或报表的计算控件表达式中使用 DLookup 函数。例如,假定有一个“Order Details”窗体基于“Order Details”表,并且含有一个显示“ProductID”字段的名为“ProductID”的文本框,要从基于这个文本框值的“Products”表中查阅“ProductName”字段,可以创建另一个文本框,并将它的 ControlSource 属性设为如下表达式:
  1. =DLookup("[ProductName]", "Products", "[ProductID] =" _


  2.      & Forms![Order Details]!ProductID)
复制代码


               


5#
 楼主| 发表于 2006-6-14 01:41:00 | 只看该作者
下面是我错误的例子,屡次被语法错误折腾,希望别人能避免.而且,这样的错误,access2003不会提出

   '错误的例子
   'var = DLookup(toNumber, "temptobom", ((EquationPartNumber = Epn) And (toNumber = Num)))
   'var1 = DLookup(toNumber, "temptobom", EquationPartNumber = Epn)
   'var2 = DLookup(EquationPartNumber, "temptobom", toNumber = Num)
  

正确的例子
   varX = DLookup("[toNumber]", "temptobom", "[EquationPartNumber] ='" _
                    & Epn & "' And  [toNumber] ='" _
                    & Num & "'")
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-27 11:21 , Processed in 0.101163 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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