该程序错在哪里?(20分)

  • 主题发起人 主题发起人 wtiebo
  • 开始时间 开始时间
W

wtiebo

Unregistered / Unconfirmed
GUEST, unregistred user!
with MyDataModule.Query1do
begin
SQL.Clear;
SQL.Add('Select * From d:/publish/database/sale1.db ');
SQL.Add('Where'+' '+ComboBox1.Text+ComboBox2.Text+Edit1.Text);
Open;
MyDataModule.Table2.Open;
end;
运行错误:
Invallid use of keyword.
Token: ?
Line number: 1
 
根据错误信息看,最有可能的是:
ComboBox1.Text所表示的字段是字符型,但Edit1.Text两边没有加引号。
另外,Where 子句要跟逻辑表达式,你的ComboBox2.Text应是
逻辑运算符,想必这一点没什么问题。
 
不对,ComboBox1.Text字段是LongInteger。
其实,我的原意是想做一个通用的单条件查询(所以,ComboBox1.Text
的类型是不确定的)。用户选择字段,逻辑运算符,并输入值构成逻辑表达式,
然后进行查询。即动态生成查询条件。
 
从你的程序很容易看出你的意图 :)
>>'所以,ComboBox1.Text的类型是不确定的'
既然是不确定的,又怎么说是LongInteger呢?
我想你的程序可能不是每次执行都出错,
在出错的那一次跟踪一下,看看SQL的内容就知道,
肯定是出现了'?',那时看看各变量及构件的值,
就知道问题所在了。
 
对不起,可能是我没说清楚。
我本想做一个通用的查询,但在测试的时候,就连最简单的Integer类型
都没通过(顺便说一下,Alpha也不行)。
 
:((( 我的意思难道这么不清楚?------->
跟踪到出错的时候,看看那条SQL是什么,
贴上来看看?
 
文件名要用""括起来!(因为有. sql认为db前的是别名, 当然会错)
'Select * From "d:/publish/database/sale1.db" '
 
多人接受答案了。
 
后退
顶部