1、 您好:我做了一个窗体,在其中有一个Edit1、还有一个DBEdit1,有一个datasource1、query1。属性如下:
datasource1的dataset为query1。
Query1的databasename为shbx2(为SQL server中的数据库的名字),SQL属性为’select * from 单位情况表(shbx2中的一个表) where dwbh=’a00100’’ 。active属性设为true。
然后我想通过edit1的onkeypress方法来直接将单位情况表中单位编号(dwbh)为edit1 中的text的单位的名称(dwmc)读出来,写入Dbedit1中,可是我如下写是出现运行错误: Query1: field 'dwmc' not fonud.
代码是这样的:
procedure TfmBJForm.Edit6KeyPress(Sender: TObject; var Key: Char);
var
dwbh1,dwbh2,dwbh3,dwbh4:string;
begin
if key=#13 then
begin
dwbh1:=copy(edit6.text,1,1);
dwbh2:=copy(edit6.text,2,5);
dwbh3:=uppercase(dwbh1); //转换为大写形式;
edit6.Text :=dwbh3+dwbh2;
dwbh4:=copy(edit6.Text,1,6);
with query1 do
begin
query1.Close ;
query1.sql.Clear;
query1.sql.add('select * from 单位情况表 where dwbh='''+edit6.text+'''');
//此处为什么要加上+ +,还有怎么会有三个引号
dbedit1.Text :=query1.fieldbyname('dwmc').AsString ;
query1.ExecSQL ;
end;
end;
end;
2、另外我在运行程序时为什么每次总是要求我输入用户名和密码,怎么样去掉?(这个密码好像是我的shbx2的安全登录和配置ODBC时设置的用户名和密码)。 databasename: shbx2
username:
password:
datasource1的dataset为query1。
Query1的databasename为shbx2(为SQL server中的数据库的名字),SQL属性为’select * from 单位情况表(shbx2中的一个表) where dwbh=’a00100’’ 。active属性设为true。
然后我想通过edit1的onkeypress方法来直接将单位情况表中单位编号(dwbh)为edit1 中的text的单位的名称(dwmc)读出来,写入Dbedit1中,可是我如下写是出现运行错误: Query1: field 'dwmc' not fonud.
代码是这样的:
procedure TfmBJForm.Edit6KeyPress(Sender: TObject; var Key: Char);
var
dwbh1,dwbh2,dwbh3,dwbh4:string;
begin
if key=#13 then
begin
dwbh1:=copy(edit6.text,1,1);
dwbh2:=copy(edit6.text,2,5);
dwbh3:=uppercase(dwbh1); //转换为大写形式;
edit6.Text :=dwbh3+dwbh2;
dwbh4:=copy(edit6.Text,1,6);
with query1 do
begin
query1.Close ;
query1.sql.Clear;
query1.sql.add('select * from 单位情况表 where dwbh='''+edit6.text+'''');
//此处为什么要加上+ +,还有怎么会有三个引号
dbedit1.Text :=query1.fieldbyname('dwmc').AsString ;
query1.ExecSQL ;
end;
end;
end;
2、另外我在运行程序时为什么每次总是要求我输入用户名和密码,怎么样去掉?(这个密码好像是我的shbx2的安全登录和配置ODBC时设置的用户名和密码)。 databasename: shbx2
username:
password:
解决方案 »
- matlab中有没有将度分秒(如86°52′36.27″,可用实数86.523627表示)转换为弧度的函数?或将弧度转换为度分秒的函数?自己编写这两个转换函数觉得很难啊。
- 如何 移动、复制和删除文件夹??
- COM+更新对象无法更新数据,Format '%s' invalid or incompatible with argument
- TImage中坐标的问题?
- 【DSPACK】有关DSPack中RenderFile的一个问题。
- 有哪位好心人能整理一下delphi的字符串函数吗?
- 用lineto()的时候超出image大小,怎么才能让它自动出现滚动条???
- 关于循环语句的问题我就是搞不懂请帮助!
- 用delphi如何写备份数据库得程序?
- Oracle高手请进
- 请问什么是三层构架?
- opendialog控件怎么用来着?
procedure TfmBJForm.Edit6KeyPress(Sender: TObject; var Key: Char);
var
dwbh1,dwbh2,dwbh3,dwbh4:string;
begin
if key=#13 then
begin
dwbh1:=copy(edit6.text,1,1);
dwbh2:=copy(edit6.text,2,5);
dwbh3:=uppercase(dwbh1); //转换为大写形式;
edit6.Text :=dwbh3+dwbh2;
dwbh4:=copy(edit6.Text,1,6);
with query1 do
begin
query1.Close ;
query1.sql.Clear;
query1.sql.add('select * from 单位情况表 where dwbh='''+edit6.text+'''');
//此处为什么要加上+ +,还有怎么会有三个引号
Query1.Open ;
if Query1.recordcounts > 0 then
dbedit1.Text :=query1.fieldbyname('dwmc').AsString ;
end;
end;
end;
二\
1.BDE连接:
1.1.通过BDE别名连接
1.1.1.通过ODBC来连接(创建ODBC别名,人工与程序两种方式都可实现,具体请查以前的帖子)
1.1.2.通过BDE 管理器创建BDE别名来连接
1.1.3.在程序中创建BDE别名来连接.
1.1.4.不创建BDE别名,通过TDatabase来实现连接.
2.ADO连接:
1.1.通过ODBC连接
1.2.在设计期设置ADOConnection的ConnectString来实现
1.3.在程序中动态实现ADOConnection的ConnectString的字符串内容,然后再连接.
3.dbExpress连接:
这种方法我只是试了一下,没有具体应用,感觉与ADO的用法差不多.
4.第三方连接方法:
第三方提供的连接数据库的方法(太多了)
dbedit可以直接实现你说的功能。
Delphi中规定:字符串中若存在字符“'”为了区别于字符串的边界字符“'”,在写该字符串时用“''”表示一个单引号;
query1.sql要到SQL中执行,SQL不会认识edit6.text,所以要用“+”分开
2.用TADOconnection连接数据库,将TADOconnection的LoginPrompt属性改为false,这样就不用每次其他控件连这个ADOconnection时要求输入密码了(前提条件:链接时选中“允许保存密码”)