修改为: INSERT INTO PMSANGAL_TBLSPECSTEPS ( MOD, [CATALOG#], [STEP#], LAYER, MIN_OHMS, NOM_OHMS, MAX_OHMS, LEFT_PERCENT, RIGHT_PERCENT ) SELECT tblSpecSteps.Mode, tblSpecSteps.[Catalog #], tblSpecSteps.[Step #], tblSpecSteps.Layer, tblSpecSteps.[Min Ohms], tblSpecSteps.[Nom Ohms], tblSpecSteps.[Max Ohms], tblSpecSteps.[Left %], tblSpecSteps.[Right %] FROM tblSpecSteps LEFT JOIN PMSANGAL_TBLSPECSTEPS ON ((tblSpecSteps.[Catalog #] = PMSANGAL_TBLSPECSTEPS.[CATALOG#]) AND (tblSpecSteps.[Step #] = PMSANGAL_TBLSPECSTEPS.[STEP#])) WHERE (((PMSANGAL_TBLSPECSTEPS.[CATALOG#]) Is Null) AND ((PMSANGAL_TBLSPECSTEPS.[STEP#]) Is Null));因为所有主键列均非空,所以您需要在 WHERE 条件中使用 AND。 对所有表重复以上步骤。 假如表中没有主键,则使用 AND 而非 OR 在所有列上进行一次联接并在所有列上进行一次 null 检查。 转到“宏”。 在“操作”中选择“OpenQuery”,并选择追加的查询之一。“视图”将是“数据表”,而“数据模式”将是“编辑”。 保存该宏。 选择该宏,并转到“工具”-“宏”->“将宏转换为 Visual Basic 代码”。 假如尚未选中“给生成的函数加入错误处理”和“包含宏注释”,则选中此二者,并单击“转换”,将该宏转换为具有函数名的模块。 保存该模块。 再次转到该模块,对其进行更改,使用以下的模板: '------------------------------------------------------------ ' CalMacro ' '------------------------------------------------------------ Function CalMacro() On Error GoTo CalMacro_Err
Dim strConnect As String Dim strMyFile As String Dim dbs As Database Dim rst As RecordsetstrConnect = "ODBC;DATABASE=PUNEET;DSN=PUNEET;" & "UID=PMSANGAL;" & "PWD=********;"'PUNEET is the DSN or name of the database...Set dbs = OpenDatabase("", False, True, strConnect) Set rst = dbs.OpenRecordset("PMSANGAL.tblCal", dbOpenDynaset)
DoCmd.SetWarnings False DoCmd.OpenQuery "tblCal Without Matching PMSANGAL_TBLCAL", acNormal, acEdit