您的位置:首页 > 其它

Access合并表 类型不匹配问题的解决方式

2007-08-23 09:20 357 查看
一朋友,目前与Access打交道的机会比较多,遇上了合并表的问题,我猜想应该是各级经销商需要做报表,汇总信息吧。

问题是来自各级的Access表的字段类型设计的并不一致,导致在拷贝粘贴复制的时候出现了类型不匹配的错误。根据错误提示,我首先查看了一下各个表的字段类型,发现果然有一个字段在子表中的类型为文本,而总表的对应字段类型为数字(为方便说明,假设子表中字段名为temp_text)。这是导致错误出现的原因。

当然,文本类型可以允许数字类型内容的出现,换句话说,将总表的数据拷贝到子表当中是不会报错的;但反之则会出错。解决将子表合并至总表的方式如下:

其一,可以更改总表该字段的类型,从数字更改为文本,而后合并表;
其二,可以在子表中新建一个字段,并将该字段使用对应temp_text字段的数字类型内容进行填充,最后删除原temp_text字段并将新字段更名。

第一种做法,实在是一种投机的做法。如果更改总表类型不至于影响到应用的话,倒也无妨。但不容忽视如此操作会带来一些副作用:其一,该字段内容输入的类型检查功能会削弱,也就是说本来只允许数字存在,现在字母也可以存在其中,如果输入失误,那么会造成一定应用上的混乱;其二,如果存在某应用程序访问该表,也会产生一些麻烦。

第二种做法,相对要保险一些。方法如下:
1>在子表中增加一个字段(假设为temp_num),并将其类型设置为数字类型
2>在Access查询视图的sql视图中,执行下面的语句:update tableName set temp_num=CLng(temp_text)
即可将新增的temp_num字段填充,其内容为原temp_text字段对应的数字。
3>在设计视图中,将原字段temp_text删除,并将temp_num更名为原字段名即可。
__________
其中CLng(express)是转换函数,具体还有些常见转换函数:
CBool(expression)
CByte(expression)
CCur(expression)
CDate(expression)
CDbl(expression)
CDec(expression)
CInt(expression)
CLng(expression)
CSng(expression)
CStr(expression)
CVar(expression)
CStr(expression)
其功能随意在网络上就可以查到。
___________
最后补充一下,如何在Access中使用SQL视图执行SQL语句:
打开access数据库,在左边对象栏里有个查询,点在设计视图创建查询,点关闭,然后你可以看到左上方工具栏上有个写着SQL的按钮,点击就可以输入SQL语句了。工具栏上还有一个红色感叹号按钮,用于执行SQL语句。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐