这个SQL 怎么改? 300(300分)

  • 主题发起人 主题发起人 zhm_good
  • 开始时间 开始时间
Z

zhm_good

Unregistered / Unconfirmed
GUEST, unregistred user!
我这个SQL是Tquery 自动生成的。有时我要修改其中的路径,怎么改??

SELECT Books.Bookno, Books.Bookname, Books."Position", Books.Memo, Books.Price, Type.Typestr
FROM "f:/图书管理系统/books.DB" Books
INNER JOIN "f:/图书管理系统/type.DB" Type
ON (Books.Type = Type.Typeno)

下面是我改的不知道错在哪时??? 300分求助,谢谢!

procedure Tmainfrm.N3Click(Sender: TObject);
const sqlstr1='from %s books';
const sqlstr2='INNER JOIN %s Type';
var
dataBaNa,ta1,ta2:string ;
begin
dataBaNa:=ExtractFilePath(Application.ExeName);
ta1:=dataBaNa+'books.db';
ta2:=dataBaNa+'type.db';
ShowMessage(ta1);
ShowMessage(ta2);
query1.close;
query1.SQL.Clear;
query1.SQL.add('SELECT Books.Bookno, Books.Bookname, Books."Position", Books.Memo, Books.Price, Type.Typestr');
query1.sql.add(format(sqlstr1,[ta1]));
query1.sql.add(format (sqlstr2,[ta2]));
query1.sql.add('ON (Books.Type = Type.Typeno)');

query1.ExecSQL;
query1.Active:=true;
end;
 
query1.ExecSQL;
query1.Active:=true;
改为query1.open
 
procedure Tmainfrm.N3Click(Sender: TObject);
var
dataBaNa,ta1,ta2:string ;
begin
dataBaNa:=ExtractFilePath(Application.ExeName);
ta1:=dataBaNa+'books.db';
ta2:=dataBaNa+'type.db';
query1.close;
query1.SQL.Clear;
query1.SQL.add('SELECT Books.Bookno, Books.Bookname, Books."Position", Books.Memo, Books.Price, Type.Typestr');
query1.sql.add('from "'+ta1+'" books ');
query1.sql.add('inner join "'+ta2+'" type ');
query1.sql.add('ON Books.Type = Type.Typeno');

query1.open;
// query1.Active:=true;
end;
 
同意楼上的,应该用变量代替,否则将不能修改.
 
我觉得应该除了Query1.ExecSQL可能会问题之外,还有一个可能会出问题的地方
就是你使用的Query1.DatabaseName没有作相应的修改
需要查看相应的Query1.DatabaseName改为你指定的目录文件目录
 
用变量多简单,为什么要舍易求难呢?
 
同意楼上!
 
这本来是一个很简单的问题呀,不值这么多分的
with query do begin
close; sql.clear; databasename:=ExtractFilePath(Application.ExeName);
sql.add('select ... from books,type where ...'); //inner join与 =连接 相同,没必要使用inner join
try open except end; //select 语句,使用open打开,如果是update等没有结果集返回,则用execsql
end;
 
后退
顶部