procedure TForm1.Button1Click(Sender: TObject); 
var 
str:string; 
begin 
with ADOQuery1 do 
begin 
try 
     str:=Edit1.text; 
     ADOQuery1.close; 
     ADOQuery1.SQL.clear; 
     ADOQuery1.SQL.add( 'select name,score,scoreduan,xianshi from TABLE1 where ID= ' ' '+str+ ' ' ' '); 
     ADOQuery1.Open; 
     If ADOQuery1.Recordset.RecordCount  >0 then 
      
     Edit4.Text:=fieldbyname( 'scoreduan ').asstring; 
     Edit3.Text:=fieldbyname( 'name ').AsString; 
     Edit2.Text:=fieldbyname( 'score ').AsString;      Memo1.Text:=fieldbyname( 'xianshi ').asstring 
     else          application.MessageBox( '没有找到信息 ', '提示 ',mb_ok+mb_iconinformation);
其中的TABLE1 是我自己在SQL里面本来存在的一个表.在自己的机子上能运行.但是用到别人的机子上,
别人定义的表名不一样.程序就不能运行.不可能叫别人也把表名也改成TABLE1 吧!怎么样实现无论别人怎么样命名表.都能运行程序.
我是新手,请高手指点.具体一点哈,谢谢! 

解决方案 »

  1.   

    procedure MyProc(TableName:String='Table1');  
    var  
    str:string;  
    begin  
    with ADOQuery1 do  
    begin  
    try  
         str:=Edit1.text;  
         ADOQuery1.close;  
         ADOQuery1.SQL.clear;  
         ADOQuery1.SQL.add(  'select name,score,scoreduan,xianshi from '+TableName+' where ID=  '  '  '+str+  '  '  '  ');  
         ADOQuery1.Open;  
         If ADOQuery1.Recordset.RecordCount   >0 then  
           
         Edit4.Text:=fieldbyname(  'scoreduan  ').asstring;  
         Edit3.Text:=fieldbyname(  'name  ').AsString;  
         Edit2.Text:=fieldbyname(  'score  ').AsString;       Memo1.Text:=fieldbyname(  'xianshi  ').asstring  
         else           application.MessageBox(  '没有找到信息  ',  '提示  ',mb_ok+mb_iconinformation);  
     
      

  2.   

    然后,在Edit里面。或者使用ini的方式传递Table的名字
      

  3.   

    procedure MyProc(TableName:String= 'Table1 ');   
    这是你定义的过程吗;
    还是不怎么懂.
      

  4.   

    procedure MyProc(TableName:String=  'Table1  ');  
    中的TableName就是那个表名就改成  
    'select name,score,scoreduan,xianshi from ' + TableName + ' where ID=  '  '  '+str+  '  '  '  ');  
      

  5.   

    如果是access数据库的话,表名是不能动态赋值的,否则要出问题
      

  6.   

    我的程序是写在procedure TForm1.Button1Click(Sender: TObject);  
    里面的.我试了下procedure MyProc(TableName:String= 'Table1 ');   
    var   
    str:string;   
    begin   
    with ADOQuery1 do   
    begin   
    try   
         str:=Edit1.text;   
         ADOQuery1.close;   
         ADOQuery1.SQL.clear;   
         ADOQuery1.SQL.add(   'select name,score,scoreduan,xianshi from  '+TableName+ ' where ID=   '   '   '+str+   '   '   '   ');   
         ADOQuery1.Open;   
         If ADOQuery1.Recordset.RecordCount    >0 then   
            
         Edit4.Text:=fieldbyname(   'scoreduan   ').asstring;   
         Edit3.Text:=fieldbyname(   'name   ').AsString;   
         Edit2.Text:=fieldbyname(   'score   ').AsString;        Memo1.Text:=fieldbyname(   'xianshi   ').asstring   
         else            application.MessageBox(   '没有找到信息   ',   '提示   ',mb_ok+mb_iconinformation);   
     程序要报错误呀
      

  7.   

    DBemo1有绑定字段或没有帮定字段都可以,从新检查一下应该是小的问题引起的,,,
      

  8.   

    DBemo1有绑定字段或没有帮定字段都可以,从新检查一下应该是小的问题引起的,,,
      

  9.   

    DBemo1有绑定字段或没有帮定字段都可以,从新检查一下应该是小的问题引起的,,,