DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: 19137911446
今日帖子: 5
在线用户: 28
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 mantis (小脚印) ★☆☆☆☆ -
盒子活跃会员
2004/2/16 17:26:54
标题:
SOS!有关动态查询??????????? 浏览:1416
加入我的收藏
楼主: 当执行下面的程序,按“查询”按钮后会报错:
Project project123.exe raised exception class EDatabaseError with message'Query1:Field'input11'is of an unknown type'.Process stopped.Use Step 
or Run to continue.

code segment:

unit p123;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, DBTables, Grids, DBGrids;

type
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    Edit1: TEdit;
    Button1: TButton;
    Query1: TQuery;
    Edit2: TEdit;
    Edit3: TEdit;
    DataSource1: TDataSource;
    Query1Code: TStringField;
    Query1Name: TStringField;
    Query1Type: TStringField;
    Query1Number: TFloatField;
    Query1Price: TFloatField;
    Query1Cash: TFloatField;
    Query1Date: TDateField;
    Query1Memo: TStringField;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
strsql:string;
input11:string;
 begin
  if trim(edit1.text)<>'then
  begin
    input11:=edit1.Text;
    strsql:='select * from handset where name=:input11';
  if query1.Active then
    query1.Active:=false;
  query1.SQL.Clear;
  query1.SQL.Add(strsql);
  query1.Active:=true;
end;    
end;

end.

----------------------------------------------
命运是一只沦落在鸡窝里的鹰
作者:
男 waterstone (waterstone) ★☆☆☆☆ -
盒子活跃会员
2004/2/16 17:56:15
1楼: 应该这样引用变量
    strsql:='select * from handset where name="'+input11+'"';


----------------------------------------------
我来自农村广阔的田野我的每一个动作都很夸张http://waterstone.51r.com
作者:
男 peeper (peeper) ★☆☆☆☆ -
盒子活跃会员
2004/2/18 12:48:55
2楼: 你可以使用:
strsql:='select * from handset where name=:pinput'
query1.sql.text:=strsql;
query1.parambyname('pinput'):=input11;
query1.active:=true;
或者,直接写:
strsql:='select * from handset where name= '+#39+input11+#39;
代码比较容易读
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行80.07813毫秒 RSS