求解:下面源代码中 运行7.0调试, 为何MD001,MD002 ,MD003,MD004,MD005,MD006,的数值都能查询,显示到界面来。
用 SQL却可以查找出来。//依据公司别查找表ACTMD中的数据
procedure TfWF_ACTMBToACTTB.SearchACTMD();
begin
SearchSQL:='SELECT ACTMD.*,MA008 FROM '+
'('+
'SELECT ACTMD.COMPANY,MD001,MD002,MD003,MD004,MD005,1 TB004,MD007 FROM '+trim(ComboBox1.Text)+'..ACTMD ACTMD'+
' UNION ALL '+
'SELECT COMPANY,MD001,MD002,MD003,MD004,MD006,-1 TB004,MD007 FROM '+trim(ComboBox1.Text)+'..ACTMD'+
') ACTMD'+ ' LEFT JOIN '+ trim(ComboBox1.Text)+'..ACTMA ACTMA ON MA001=MD001'+
' WHERE MD003='+''''+ComboBox2.Text+''''+' AND MD004='+''''+ComboBox3.Text+''''+//' AND MD005<>0'+
' AND (MA008='+''''+'2'+''''+' OR MA008='+''''+'3'+''''+')'+ ' AND MD001<>'+''''+'3353'+''''+
' ORDER BY MD001';
try
with fdm_WF.qryUN_SUM do
begin
sql.Clear;
sql.Add(SearchSQL);
open;
end;
except
showmessage('查询数据错误!');
abort;
end;
end;
用 SQL却可以查找出来。//依据公司别查找表ACTMD中的数据
procedure TfWF_ACTMBToACTTB.SearchACTMD();
begin
SearchSQL:='SELECT ACTMD.*,MA008 FROM '+
'('+
'SELECT ACTMD.COMPANY,MD001,MD002,MD003,MD004,MD005,1 TB004,MD007 FROM '+trim(ComboBox1.Text)+'..ACTMD ACTMD'+
' UNION ALL '+
'SELECT COMPANY,MD001,MD002,MD003,MD004,MD006,-1 TB004,MD007 FROM '+trim(ComboBox1.Text)+'..ACTMD'+
') ACTMD'+ ' LEFT JOIN '+ trim(ComboBox1.Text)+'..ACTMA ACTMA ON MA001=MD001'+
' WHERE MD003='+''''+ComboBox2.Text+''''+' AND MD004='+''''+ComboBox3.Text+''''+//' AND MD005<>0'+
' AND (MA008='+''''+'2'+''''+' OR MA008='+''''+'3'+''''+')'+ ' AND MD001<>'+''''+'3353'+''''+
' ORDER BY MD001';
try
with fdm_WF.qryUN_SUM do
begin
sql.Clear;
sql.Add(SearchSQL);
open;
end;
except
showmessage('查询数据错误!');
abort;
end;
end;
用 SQL却可以查找出来。
procedure TfWF_ACTMBToACTTB.SearchACTMD();
begin
SearchSQL:='SELECT ACTMD.*,MA008 FROM '+
'('+
'SELECT ACTMD.COMPANY,MD001,MD002,MD003,MD004,MD005,1 TB004,MD007 FROM '+trim(ComboBox1.Text)+'..ACTMD ACTMD'+
' UNION ALL '+
'SELECT COMPANY,MD001,MD002,MD003,MD004,MD006,-1 TB004,MD007 FROM '+trim(ComboBox1.Text)+'..ACTMD'+
') ACTMD'+ ' LEFT JOIN '+ trim(ComboBox1.Text)+'..ACTMA ACTMA ON MA001=MD001'+
' WHERE MD003='+''''+ComboBox2.Text+''''+' AND MD004='+''''+ComboBox3.Text+''''+//' AND MD005 <>0'+
' AND (MA008='+''''+'2'+''''+' OR MA008='+''''+'3'+''''+')'+ ' AND MD001 <>'+''''+'3353'+''''+
' ORDER BY MD001';
try
with fdm_WF.qryUN_SUM do
begin
sql.Clear;
sql.Add(SearchSQL);
Showmessage(SearchSQL);
//open;
end;
except
showmessage('查询数据错误!');
abort;
end;
end;
比如,一些条件的值到底是字符还是数字?你看你加的单引号又没有问题,有的时候,delphi编译是通过了,但还是会查不出来数据的~~~
SELECT ACTMD.*,MA008 FROM(SELECT ACTMD.COMPANY,MD001,MD002,MD003,MD004,MD005,1 TB004,MD007
FROM WAY2006..ACTMD UNION ALL SELECT COMPANY,MD001,MD002,MD003,MD004,MD006,-1 TB004,MD007
FROM WAY2006..ACTMD)ACTMD LEFT JOIN WAY2006..ACTMA ACTMA ON MA001=MD001 WHERE MD003='2009'
AND MD004='02'AND (MA008='2'OR MA008='3')AND MD001<>'3353' ORDER BY MD001
(SELECT ACTMD.COMPANY,MD001,MD002,MD003,MD004,MD005,1 TB004,MD007 FROM WAY2006..ACTMD
UNION ALL SELECT COMPANY,MD001,MD002,MD003,MD004,MD006,-1 TB004,MD007
FROM WAY2006..ACTMD)ACTMD
LEFT JOIN WAY2006..ACTMA ACTMA ON MA001=MD001
WHERE MD003='2009'AND MD004='02'AND (MA008='2'OR MA008='3')AND MD001<>'3353' ORDER BY MD001
(SELECT ACTMD.COMPANY,MD001,MD002,MD003,MD004,MD005,1 TB004,MD007 FROM WAY2006..ACTMD
UNION ALL SELECT COMPANY,MD001,MD002,MD003,MD004,MD006,-1 TB004,MD007
FROM WAY2006..ACTMD)ACTMD
LEFT JOIN WAY2006..ACTMA ACTMA ON MA001=MD001
WHERE MD003='2009'AND MD004='02'AND (MA008='2'OR MA008='3')AND MD001<>'3353' ORDER BY MD001提示错误:服务器: 消息 107,级别 16,状态 2,行 1
The column prefix 'ACTMD' does not match with a table name or alias name used in the query.
请教是什么意思