Delphi+Access 生成表查询的问题
使用Delphi7+Access2003写一个小管理系统使用了两个数据库操作函数SetQuery(SQLText)执行SQL无返回值GetQuery(SQLText)执行...
使用Delphi 7+ Access 2003写一个小管理系统
使用了两个数据库操作函数
SetQuery(SQLText) 执行SQL无返回值
GetQuery(SQLText) 执行SQL有返回值
和一个获得"生成表查询"SQL语句的函数
GetSQLText
--------问题说明-----------
SetQuery('Drop Table TempChild'); //先删除生成表
SetQuery(GetSQLText); //执行生成表查询
DataSource1.DataSet := GetQuery('Select * from TempChild');//显示生成表的内容
//这里先假设GetSQLText = SELECT * INTO TempChild FROM TempTable WHERE (((TempTable.No) ='00000002'))
执行以上程序后
可以成功得查询出编号为00000002的内容
接下来就有问题了
//这里假设GetSQLText = SELECT * INTO TempChild FROM TempTable WHERE (((TempTable.No) ='*00000002*'))
执行以上程序后没有查询出任何内容
TempChild 也没有内容
在access中执行这个查询却可以执行,并且TempChild 也有相应查询出来的内容
---------------------------
这是怎么回事?模糊查询不可以进行生成表查询吗?
写错了一个地方
模糊查询的
//这里假设GetSQLText = SELECT * INTO TempChild FROM TempTable WHERE (((TempTable.No) Like '*00000002*'))
"="改成"like"
========================================================
生成表是为了执行下步更复杂的查询
我表述的可能不太清楚
按照懒虫大侠所说的
当GetSQLText = SELECT * INTO TempChild FROM TempTable WHERE (((TempTable.No) ='00000002'))
时候应该也是没有数据
事实这个非"模糊查询"的结果->是在生成的TempChild中插入了所查询出来的数据
而使用了"模糊查询"的结果->是在生成的TempChild中*没有*插入数据
在Access中执行模糊查询结果却是在TempChild中*插入*了数据.
谢谢您的回答!
======================================================== 展开
使用了两个数据库操作函数
SetQuery(SQLText) 执行SQL无返回值
GetQuery(SQLText) 执行SQL有返回值
和一个获得"生成表查询"SQL语句的函数
GetSQLText
--------问题说明-----------
SetQuery('Drop Table TempChild'); //先删除生成表
SetQuery(GetSQLText); //执行生成表查询
DataSource1.DataSet := GetQuery('Select * from TempChild');//显示生成表的内容
//这里先假设GetSQLText = SELECT * INTO TempChild FROM TempTable WHERE (((TempTable.No) ='00000002'))
执行以上程序后
可以成功得查询出编号为00000002的内容
接下来就有问题了
//这里假设GetSQLText = SELECT * INTO TempChild FROM TempTable WHERE (((TempTable.No) ='*00000002*'))
执行以上程序后没有查询出任何内容
TempChild 也没有内容
在access中执行这个查询却可以执行,并且TempChild 也有相应查询出来的内容
---------------------------
这是怎么回事?模糊查询不可以进行生成表查询吗?
写错了一个地方
模糊查询的
//这里假设GetSQLText = SELECT * INTO TempChild FROM TempTable WHERE (((TempTable.No) Like '*00000002*'))
"="改成"like"
========================================================
生成表是为了执行下步更复杂的查询
我表述的可能不太清楚
按照懒虫大侠所说的
当GetSQLText = SELECT * INTO TempChild FROM TempTable WHERE (((TempTable.No) ='00000002'))
时候应该也是没有数据
事实这个非"模糊查询"的结果->是在生成的TempChild中插入了所查询出来的数据
而使用了"模糊查询"的结果->是在生成的TempChild中*没有*插入数据
在Access中执行模糊查询结果却是在TempChild中*插入*了数据.
谢谢您的回答!
======================================================== 展开
1个回答
展开全部
这并不是一个普通的Select语句,加上Into之后,会在数据库里面生成实际的表,也就不会返回在内存中的临时表了,即不返回记录而只执行操作。加在一起的功能就是根据where的条件查询TempTable表中的记录,并用返回的记录生成一个新表TempChild。如果想得到记录集的话,去掉INTO TempChild即可
啊,原来是这个意思啊,我理解错误了,为了补回,我做了下实验,发现在DELPHI中确实不能用,不过原因在于模糊查询得不到正常的返回值。虽说相同的语句在ACCESS里面可以,但是在Delphi中用ADO控件是不行的,你可以把查询中的通配符“*”用“%”替换就可以了,虽说有点不可思议,但确实如此。
啊,原来是这个意思啊,我理解错误了,为了补回,我做了下实验,发现在DELPHI中确实不能用,不过原因在于模糊查询得不到正常的返回值。虽说相同的语句在ACCESS里面可以,但是在Delphi中用ADO控件是不行的,你可以把查询中的通配符“*”用“%”替换就可以了,虽说有点不可思议,但确实如此。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询