以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 如何实现合并? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=187563) |
-- 作者:lin98 -- 发布时间:2023/7/27 10:35:00 -- 如何实现合并? 如何实现将以表B(明细表)的已审核的数据与表A(主表)的指定字段进行高效合并,为另一表,如图表C? 注:表A有10万条记录,表B有100万条件记录 问题一: 在表B扩展临时列,如客户,日期列,用跨表引用方法,将表A的指定字段的内容引入表B,这种方法有2个问题 1.窗口打后,常常会报找不到临时列; 2.数据量大,跨表引用时,速度不快。 问题二:是否有高效,实现将以表B(明细表)的已审核的数据与表A(主表)的指定字段进行高效合并,为另一表,如图表C? 问题三:合并另一表,写入正表好,还写入手动建好的临时表,或代码生成临时表? 1.正表会将数据存入数据库,会占用资源,使用时,直接取数据,相对方便,临时表,数据不存入数据库,不会占用资源,使用时,代码运算才取数据,其速度会不会比正表慢? |
-- 作者:有点蓝 -- 发布时间:2023/7/27 10:44:00 -- 一 1、怎么扩展的临时列?什么事件写了什么代码? 2、如果要经常使用,建议改为永久列,通过sql一次性更新所有数据 二、如果表C是查询表,使用sql处理即可。如果是数据表,看上面第2点 三、根据自己的需要使用。个人的建议是永久把数据存入数据库使用。现在硬盘都是按T为单位的,那么点数据能够占用多少资源? |
-- 作者:lin98 -- 发布时间:2023/7/27 12:00:00 -- 1.合并后的表的数据,主要是用查看、统计,被引用 2.实际开发中,表A和表B大约有10个字段重复,做永久列,会冗余,占用大量资源,造成项目运行卡,很多大伽都不要这样做, 个人认为做永久列,会冗余,占用大量资源,会造成项目运行卡,对被引用看来比较直接,简单。 3.我用窗口开发,表C是查询表是狐表,不会直接放在窗口,还来源表的数据更新,查询表无法同步更新, 4.采用SQLQuery表,将表C是查询表执行sql,调试运行好好,再过一段时间运行时,会报SQL错误。 5.下面代码,是只加载空表?还是加载表和数据?如果加载表和数据,没条件,会加载全部数据,可能占用大资源。 If DataTables.Contains("产品") = False Then DataTables.Load("产品|订单|订单明细")End If |
-- 作者:有点蓝 -- 发布时间:2023/7/27 12:12:00 -- 我这种小伽认为,项目使用卡不卡和数据库冗余基本没有什么直接关系,反而认为合适的冗余效率会更高。 不使用代码处理,任何表都不会自动刷新。查询表数据一样可以手工刷新。 DataTables.Load("产品|订单|订单明细")默认会同时加载表结构和数据
|
-- 作者:lin98 -- 发布时间:2023/7/27 13:42:00 -- DataTables.Load("产品|订单|订单明细")默认会同时加载表结构和数据 做动态加载 想用在主界面做动态加载,只加载表,不加载数据,因为数据在业务窗口上加载,这样会不避免重复加载,如何实现? DataTables.Load("产品|订单|订单明细")只加载表,不加载数据?
|
-- 作者:有点蓝 -- 发布时间:2023/7/27 13:58:00 -- 到BeforeLoadOuterTable写代码限制加载条件:http://www.foxtable.com/webhelp/topics/0670.htm |
-- 作者:lin98 -- 发布时间:2023/7/27 14:26:00 -- 由于涉及具体业务,不在BeforeLoadOuterTable写加载,在主界面的按键事件写下面代码: 下面有没有比较简单写法? If DataTables.Contains("产品") = False Then DataTables.Load("产品|订单|订单明细") End If If e.DataTableName = "产品" Then e.SelecHtString = "SelecH * From {产品} Where [_Identify] Is Null" End If If e.DataTableName = "订单" Then e.SelecHtString = "SelecH * From {订单} Where [_Identify] Is Null" End If If e.DataTableName = "订单明细" Then e.SelecHtString = "SelecH * From {订单明细} Where [_Identify] Is Null" End If
[此贴子已经被作者于2023/7/27 14:26:44编辑过]
|
-- 作者:有点蓝 -- 发布时间:2023/7/27 14:46:00 -- 必须在BeforeLoadOuterTable写条件,DataTables.Load("产品|订单|订单明细")才能限制加载数据 case "产品" ,"订单",... e.SelecHtString = "SelecH * From {“ & e.DataTableName & ”} Where [_Identify] Is Null" End select |