Office中国论坛/Access中国论坛

标题: [求助 论坛高手热心人士特别是hi-wzj ]另类的追加查询的问题(多字段变更,主从窗体 [打印本页]

作者: secowu    时间: 2005-7-19 19:56
标题: [求助 论坛高手热心人士特别是hi-wzj ]另类的追加查询的问题(多字段变更,主从窗体
[求助]在设置了主键的表里如何翻单?

思路:

特别制作一个临时窗体叫“翻单界面”,                                                            

用于储存从“制单界面”里复制过来需要修改部分需要数据的记录

在“制单界面”里设置个“翻单”命令按钮:主要完成复制并把记录粘贴到“翻单界面”的功能

在“翻单界面”里设置个“完成”命令按钮:主要完成剪切并把记录粘贴到“制单界面”的功能

另外:在“翻单界面”里有个检验功能,防止修改后的字段“工作单号”的值不重复

注:

“制单界面”与“翻单界面”里的界面是一样的,只是完成的功能不同。

====================================

动作:

先在制单窗体里选中这个记录,

然后复制这条记录到翻单窗体里,

修改完需要改变的内容后,

重新复制到制单窗体。

==============================

这代码如何写呢?在线等,谢谢![

[此贴子已经被作者于2005-7-21 12:23:29编辑过]

作者: zhengjialon    时间: 2005-7-19 20:38
请问"翻单"是什么意思?看你的意思好像是要把某一条记录的部分字段追加到另一个表中,这个可用追加查询来做,或者可以用ADO来操做.
作者: secowu    时间: 2005-7-19 21:57
翻单:就是说客户曾经下过单,下单的货品是目前新的订单一样。订单格式里有:下单日期,工作单号。货品名称等其中,工作单号是主键,唯一的。因此,为了节省工作量,只要把这张客户以前下过的单复制一份到临时的窗体里显示修改下单日期,工作单号这样,就完成了新订单的制作。这样的一个过程,就叫翻单。
作者: secowu    时间: 2005-7-19 22:15
简要解释下:就是将需要修改的当前选中的记录,(这时候称为前单)复制一份到一个叫“翻单界面”的窗体,这个窗体的界面与“制单界面”一样的当修改完需要修改的字段值后,按“完成”将修改后的记录从“翻单界面”里剪切至“翻单界面”完成添加新记录的过程=======================================其实就是一个添加新记录的过程
作者: 海狸先生    时间: 2005-7-19 22:22
复制以某个字段为分类依据的记录吗?
作者: secowu    时间: 2005-7-19 22:25
我干脆把文件传上来
作者: secowu    时间: 2005-7-19 23:20
以下是引用海狸先生在2005-7-19 14:22:00的发言:

复制以某个字段为分类依据的记录吗?



感谢海狸先生关注,使我学会了很多东西。

这是出问题的MDB,麻烦帮我修正下

谢谢

另外,热烈欢迎其它高手热心人士帮忙

非常感谢



[此贴子已经被作者于2005-7-19 18:11:52编辑过]


作者: 海狸先生    时间: 2005-7-19 23:45
学习一下 插入查询 的用法INSERT INTO 语句

添加一个或多个记录至一个表。这叫作追加查询.语法

多重记录追加查询:INSERT INTO target [(field1[, field2[, ...]])][IN外部数据库]

    SELECT field1[, field2[, ...]]

    FROM tableexpression单一记录追加查询:INSERT INTO target [(field1[, field2[, ...]])]

    VALUES (value1[, value2[, ...])INSERT INTO 语句可分为以下几个部分:部分 说明

target 欲追加记录的表或查询的名称。

field1, field2 如果后面跟的是 target 参数,则为要追加数据的字段名;如果后面跟的是 source 参数,则为从其中获得数据的字段名。

Externaldatabase 进入外部数据库的路径。有关路径的描述,请参阅 IN 子句。

source 复制记录的来源表或查询的名称。

tableexpression 从其中得到要插入的记录的表名。这个变元可能是一个单一的表名,也可能是一个由 INNER JOIN, LEFT JOIN或 RIGHT JOIN 运算组成的复合体,或是一个储存的查询。

value1,value2 欲插入新记录的特定字段的值。每一个值将依照它在列表中的位置,顺序插入相关字段:value1 将被插入至追加记录的 field1 之中,value2 插入至 field2,依此类推。必须使用逗点将这些值分隔,并且将文本字段用引号 (' ') 括起来。


作者: secowu    时间: 2005-7-19 23:54
非常感谢海狸先生能否帮我改在MDB里,这样,能够按着我的思路去理解您的方法了。我很怕看MS晦涩的解释的。上次您给我的例子,我一下就看懂了。非常期待,非常感谢!!!!
作者: 海狸先生    时间: 2005-7-20 00:03
这个。。。你能试着去做做吗?这段时间我都比较忙
作者: secowu    时间: 2005-7-20 00:15
以下是引用海狸先生在2005-7-19 16:03:00的发言:

这个。。。你能试着去做做吗?这段时间我都比较忙



唉,要自己慢慢去肯了
作者: 海狸先生    时间: 2005-7-20 01:41
INSERT INTO 表 (字段1,字段2.....)   VALUES ('" & 文本控件名 &"'," & 数值控件名 &",#& 日期控件名 &#....)

[此贴子已经被作者于2005-7-19 17:41:56编辑过]


作者: sgrshh29    时间: 2005-7-20 04:47
在窗体的新纪录里把 工作单号,下单日期 先填好.窗体上放 一个 文本框 用来输入翻单用的前工作单号.然后用dao打开记录集,用find找到前工作单号的记录.再对窗体上的需要赋值的字段控件用这条记录对应赋值.应该说不是很烦.也不用什么过渡的临时窗体.你考虑行不行?

我看不到你上传的文件.就做了一个例子,用二种方法.一是上面说的,二是用复制粘贴的方法.你看哪一种合你的口味,就用哪一种.其实还有很多其他方法,如追加查询等.[attach]11900[/attach]



[此贴子已经被作者于2005-7-20 4:08:28编辑过]


作者: secowu    时间: 2005-7-20 22:43
非常感谢!

我试了下,由于“工作单号”是主键

所以,仍会出错。

我重新将文件上传至这里

重新照着罗斯文设计了表结构,分享我的学习和提高的过程

在此,对帮助我成长的高手,特别是Sgrshh29,海狸先生

和告訴我用插入自動窗體的不知名的朋友高手們深表感谢!

感谢很好。欢迎高手提供改进意见

目前,仍然存在

1.如何翻单的“问题”

2.如何在“文员制单界面”,当用户输入了新的产品时,(字段有:产品条码,产品名称)

  会自动将此数据添加至“产品条码库”

文件在下面二楼



[此贴子已经被作者于2005-7-20 17:30:34编辑过]


作者: secowu    时间: 2005-7-21 00:03
感谢Sgrshh29在您的例子中,调试全部通过正在调试我的文件谢谢
作者: sgrshh29    时间: 2005-7-21 00:18
腰里面的子窗体要不要翻单复制?

[此贴子已经被作者于2005-7-20 16:18:17编辑过]


作者: secowu    时间: 2005-7-21 00:38
要的。

我测试了下,出现了问题

我是用您的第一种方法,因为,可能这样会比较适合用

我把出问题的传上来[attach]11920[/attach]



[此贴子已经被作者于2005-7-20 16:38:00编辑过]


作者: sgrshh29    时间: 2005-7-21 00:42
你这个窗体总的设计仍有问题.数据源为什么要用存在的查询呢? 应该直接用sql查询语句.这样可以避免在进行 数据添加,  数据编辑 时的很多意想不到的情况.
作者: secowu    时间: 2005-7-21 00:51
哇,那么SQL语句太高深了俺不会,目前的成果,还是您不厌其烦的帮忙的所以,还得学习,还得请您指点找出解决的办法了吗?
作者: sgrshh29    时间: 2005-7-21 00:54
绿颜色的代码是不是有问题?因为你的rst记录集里没有这些字段.对子窗体赋值时,rst这个记录集要重新打开,指向新的记录集.
作者: secowu    时间: 2005-7-21 01:00
是啊。因为在调试时,出错我就把代码取消了找不出别的办法来因为工作单是一对多的所以,那个子窗体也要一起“翻单”
作者: sgrshh29    时间: 2005-7-21 01:02
快要下班了,你自己再试试看.我可能要明天晚上才有时间了.不好意思.
作者: sgrshh29    时间: 2005-7-21 01:04
提个建议,主窗体用第一种办法.子窗体用第二种办法.好像问题一下就解决了.
作者: secowu    时间: 2005-7-21 01:22
还是搞不懂怎么样才能把这两种方法结合在一起呢?[em06]不知有没有其它,一下就解决的方法[em05]谢谢 sgrshh29
作者: secowu    时间: 2005-7-21 01:32
海狸先生,怎么没见您用那个SQL查询帮我下?在线等待中
作者: secowu    时间: 2005-7-21 01:42
以下是引用secowu在2005-7-20 17:32:00的发言:



海狸先生,

怎么没见您用那个SQL查询帮我下?

在线等待中



急切期待中
作者: secowu    时间: 2005-7-21 02:12
[求助海狸先生或高手]另类的追加查询的问题,我将其称之为翻单(有主窗体和子窗体,相应的就是主表对应子表:这个查询怎么做?)。翻单:就是说客户曾经下过单,下单的货品是目前新的订单一样。订单格式里有:下单日期,工作单号。货品名称等其中,工作单号是主键,唯一的。因此,为了节省工作量,只要把这张客户以前下过的单复制一份到临时的窗体里显示修改下单日期,工作单号这样,就完成了新订单的制作。这样的一个过程,就叫翻单。在线等,谢谢!


作者: hi-wzj    时间: 2005-7-21 02:29
[attach]11922[/attach]



不知我的理解是否正确。

生成的新单仍在原界面上。可节省一个窗体。

另外您的表“印前印刷”里“彩印单号”设为“有索引无重复”的属性。

我是将其改为“有索引有重复”,这样才能复制。

若您确实需要的是“有索引无重复”,那要和“工作单号”一样的处理方式来处理。

[此贴子已经被作者于2005-7-20 18:32:19编辑过]


作者: hi-wzj    时间: 2005-7-21 02:34
另外您的表设计应该根据关系型数据库的原理来设计表字段,您的库存在很多重复的冗余的字段。
作者: secowu    时间: 2005-7-21 02:53
非常感谢!能否顺便帮我KILL重复的冗余的字段?
作者: secowu    时间: 2005-7-21 02:58
测试后效果很满意!!!

非常感谢







hi-wzj



  [img]http://www.office-cn.net/vvb/0>

  <img%20src=[/img]

  等级:版主

另外:如果其它字段有变化,也是按这样做吧?

但是:如果需要改变的字段超过有5个的话。

目前需要更改的字段有:

彩印单号、下单日期、柜编、锌号、工作单号、PO号

子窗体里的送货数量、送货备品、送货日期

那么怎么做呢?

非常感谢!

那么这样一个一个的弹出对话框是不是很麻烦呢?

有没有弄个小窗体(或是集中点的对话框),来设定需要改变的字段的值呢?

还有,我想通过一个组合控件来在一个主窗体里打开子窗体

那么如何用代码来改变子窗体的数据 源对象呢?

[此贴子已经被作者于2005-7-20 19:09:20编辑过]


作者: eyewitnes    时间: 2005-7-21 03:52
办法有许多,既然您会使用DAO,那么俺提供一个思路,可以利用BOOKMARK来进行复制,相比用SQL那冗长的语句可以避免代码出错和字段类型出错的机会

另外还有一种方法是利用CONTROL来进行复制,这个需要用循环,在循环中加入判断可以有选择性地进行复制,例如:如果控件名称等于唯一索引的名称则不复制

至于具体怎么应用,要看您的实际情况,还有您有没有足够的时间来理解这些方法
作者: secowu    时间: 2005-7-21 04:04
以下是引用eyewitnes在2005-7-20 19:52:00的发言:



办法有许多,既然您会使用DAO,那么俺提供一个思路,可以利用BOOKMARK来进行复制,相比用SQL那冗长的语句可以避免代码出错和字段类型出错的机会

另外还有一种方法是利用CONTROL来进行复制,这个需要用循环,在循环中加入判断可以有选择性地进行复制,例如:如果控件名称等于唯一索引的名称则不复制

至于具体怎么应用,要看您的实际情况,还有您有没有足够的时间来理解这些方法

看不懂?


作者: secowu    时间: 2005-7-21 04:10
以下是引用secowu在2005-7-20 18:58:00的发言:



测试后效果很满意!!!

非常感谢









hi-wzj





  等级:版主

另外:如果其它字段有变化,也是按这样做吧?

但是:如果需要改变的字段超过有5个的话。

目前需要更改的字段有:

彩印单号、下单日期、柜编、锌号、工作单号、PO号

子窗体里的送货数量、送货备品、送货日期

那么怎么做呢?

非常感谢!

问题:

1.那么这样一个一个的弹出对话框是不是很麻烦呢?

   有没有弄个小窗体(或是集中点的对话框),

   来设定需要改变的字段的值呢?

还有,

1.我想通过一个组合控件来在一个主窗体里打开子窗体

    那么如何用代码来改变子窗体的数据 源对象呢?

2.我想在“制单界面”里输入产品时,来个判断,如果这个产品在“条码产品库”里没有,则提醒用户是否将新记录添加到表里。这个代码又怎么写呢?

非常期待Hi-WZJ高手的帮忙!!!

在线等待中........
作者: 青青    时间: 2005-7-21 17:08
另外:如果其它字段有变化,也是按这样做吧?但是:如果需要改变的字段超过有5个的话。目前需要更改的字段有:彩印单号、下单日期、柜编、锌号、工作单号、PO号子窗体里的送货数量、送货备品、送货日期那么怎么做呢?您完全可以在生成新的工作单后,再手工进行修改啊!
作者: 青青    时间: 2005-7-21 17:11
2.我想在“制单界面”里输入产品时,来个判断,如果这个产品在“条码产品库”里没有,则提醒用户是否将新记录添加到表里。这个代码又怎么写呢?“产品”字段应为组合框,将“限于列表”属性设为“是”就ok了。
作者: 青青    时间: 2005-7-21 17:12
1.我想通过一个组合控件来在一个主窗体里打开子窗体    那么如何用代码来改变子窗体的数据 源对象呢? 海狸版主近期刚贴过这样的例子,自己找找。
作者: secowu    时间: 2005-7-21 19:28






谢谢:青青





  

您肯定没看我的文件吧?

现在剩下的问题是:

1.在窗体"文员制单界面"的“翻单”那个命令里

    如果需要改变的字段超过有5个的话。

     目前需要更改的字段有:

     彩印单号、下单日期、柜编、锌号、工作单号、PO号

     子窗体里的送货数量、送货备品、送货日期

  那么这样一个一个的弹出对话框是不是很麻烦呢?

   有没有弄个小窗体(或是集中点的对话框),

   来设定需要改变的字段的值呢?

2. 我想在“制单界面”里输入产品时,来个判断,

     这个记录是保存在“印后加工”表里的,但还有另外一个表叫“产品条码库”

     在输入界面里的数据就是从“产品条码库”里调用的

    如果这个产品在“条码产品库”里没有,则提醒用户是否将新记录添加到表里。

    这个代码又怎么写呢?

文件在此:

http://bbs.office-cn.net/viewFile.asp?Boardid=2&ID=11929

[此贴子已经被作者于2005-7-21 11:47:30编辑过]


作者: hi-wzj    时间: 2005-7-21 20:25
以下是引用青青在2005-7-21 9:08:00的发言:

另外:如果其它字段有变化,也是按这样做吧?

但是:如果需要改变的字段超过有5个的话。

目前需要更改的字段有:

彩印单号、下单日期、柜编、锌号、工作单号、PO号

子窗体里的送货数量、送货备品、送货日期

那么怎么做呢?

您完全可以在生成新的工作单后,再手工进行修改啊!



只要要更改的字段不是“有索引无重复”的属性,就可在追加后在生成后的记录上进行修改。

前面因为不知道您“彩印单号”是否必须是“有索引无重复”的属性。因此才那样说。
作者: secowu    时间: 2005-7-21 22:20
好的。那第一个问题算是解决了那么第二个问题怎么办呢?2. 我想在“制单界面”里输入产品时,来个判断,     这个记录是保存在“印后加工”表里的,但还有另外一个表叫“产品条码库”     在输入界面里的数据就是从“产品条码库”里调用的    如果这个产品在“条码产品库”里没有,则提醒用户是否将新记录添加到表里。    这个代码又怎么写呢?
作者: 静儿    时间: 2005-7-22 00:04
您的表设计怎么这样啊,好多重复的字段。要将表结构优化一下下。
作者: secowu    时间: 2005-7-22 00:17
以下是引用静儿在2005-7-21 16:04:00的发言:



您的表设计怎么这样啊,好多重复的字段。要将表结构优化一下下。



能否帮我优化下吗?

或是,提供方法?

我不知道怎么优化呀

非常感谢

我后面还要加入每台机器的生产时间和生产数量等等

可能又多了很多重复字段了。

不知怎么弄

最新文件

[attach]11936[/attach]



[此贴子已经被作者于2005-7-21 16:19:40编辑过]


作者: eyewitnes    时间: 2005-7-22 00:32
菜单--工具---分析---性能---试试看
作者: sgrshh29    时间: 2005-7-22 03:29
怎么说呢,因为作为数据库的基石,表的设计合理性是最关键的.别人(比如我)又不能明白您的设计意图,所以对表的修改是很难的.我对您上传的例子试了几次,不是关键字重复,就是无法添加记录,也看不清楚到底那些字段是唯一的.而且这些唯一的字段是不是在窗体上体现出来.您可以试一试手工输入子窗体里的数据,也无法保存,用代码操作自然也无法实现了.所以还是表的设计有问题(主要原因),窗体的设计也有问题(次要原因).由于上面提到的理由,我也不知如何修改表,望洋兴叹!
作者: sgrshh29    时间: 2005-7-22 13:26
取了您数据库中的有关翻单部分内容,做了这么个窗体.窗体的数据源,数据表之间的关系都改过了.供您参考[attach]11945[/attach]



[此贴子已经被作者于2005-7-22 5:42:31编辑过]


作者: secowu    时间: 2005-7-22 15:50
说起来不怕惭愧

这是俺做的第一个像样的程序

多亏了这么多热心人的帮忙

非常感谢

这个程序,仍然有很多功能没有加进去

正在摸着石头过河,不应该说是在那么多OFFICE-CN的热心高手们的帮忙

才有今天有点样的东西出来

我很乐意,并非常感谢各位未曾谋面的热心人的帮助。

后面,可能还会遇见很多问题,需要帮忙的

在此先说感谢

特别是Sgrshh29,正是他给我第一次像样的ACCESS之旅

还有,海狸先生,Hi-WZY,eyewitnes 静儿,青青,zhengjialon等等

正是他们的热心帮助,才有今天

非常感谢

[此贴子已经被作者于2005-7-22 7:51:32编辑过]


作者: secowu    时间: 2005-7-22 18:08
出现新的问题:

1.如何在制单界面里的那个“审核员”控件里设置行来源为表“登陆用户管理”用审核权限的用户?

2.我在窗体里设了锁定已编辑记录,为什么在窗体“产品设定”里还可以进行修改?

   在下面的子窗体里会出现空行显示的记录?=rar]viewFile.asp?ID=11948[/img]





[此贴子已经被作者于2005-7-22 12:29:54编辑过]


作者: 阳光1121    时间: 2007-9-22 09:56
没有钱看没有钱看没有钱看没有钱看
作者: 阳光1121    时间: 2007-9-22 14:35
学习一下 插入查询 的用法

INSERT INTO 语句 添加一个或多个记录至一个表。这叫作追加查询.

语法多重记录追加查询:

INSERT INTO target [(field1[, field2[, ...]])][IN外部数据库] SELECT field1[, field2[, ...]] FROM tableexpression

单一记录追加查询:

INSERT INTO target [(field1[, field2[, ...]])] VALUES (value1[, value2[, ...])

INSERT INTO 语句可分为以下几个部分:

部分 说明 target 欲追加记录的表或查询的名称。 field1, field2 如果后面跟的是 target 参数,则为要追加数据的字段名;如果后面跟的是 source 参数,则为从其中获得数据的字段名。 Externaldatabase 进入外部数据库的路径。有关路径的描述,请参阅 IN 子句。 source 复制记录的来源表或查询的名称。 tableexpression 从其中得到要插入的记录的表名。这个变元可能是一个单一的表名,也可能是一个由 INNER JOIN, LEFT JOIN或 RIGHT JOIN 运算组成的复合体,或是一个储存的查询。 value1,value2 欲插入新记录的特定字段的值。每一个值将依照它在列表中的位置,顺序插入相关字段:value1 将被插入至追加记录的 field1 之中,value2 插入至 field2,依此类推。必须使用逗点将这些值分隔,并且将文本字段用引号 (' ') 括起来。

非常有用哟.
作者: yori2007    时间: 2008-1-30 11:32





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3