简单的问题。进来答题拿分吧。(50分)

  • 主题发起人 主题发起人 wxxmlx
  • 开始时间 开始时间
W

wxxmlx

Unregistered / Unconfirmed
GUEST, unregistred user!
请看看段简单的代码
if edit1.text <> '' then
begin
if (edit1.Text = Table2id.AsString ) and
(edit2.text = Table2idmima.asstring) then
begin
form3.visible := false;
form1.show;
end
else if
(edit1.text = table3id.asstring) and
(edit2.text = table3idmima.asstring) then
begin
form3.Visible := false;
form5.show;
end

else if
(edit1.Text = table1id.AsString) and
(edit2.text = table1idmima.asstring) then
begin
form3.Visible := false;
form4.show;
end
else
messagedlg ('输入有误!',mterror,[mbok],0)
end
else messagedlg('请您输入!',mterror,[mbok],0);
end;

我想用ado的adoquery控件而不使用BDE的table来完成以上操作该怎么做
主要是代码该怎么写。我已连接成功了。
顺便问一下用adoquery用对了吗?
 
把右边的 Table...... 值换成:

AdoQuery.FieldByName('字段名').Asstring;
 
先把上面的TABLE删除,扔上ADOTable,用原来的名字,设好其它连接属性,重新编译就可以了
一行代码都不用改
 
连接设定好,原来的3个Table 全部换成ADOTable
把代码中含有 Table 的地方全部换成 各自 ADOTable 的名字
Milpas 的方法换起来比较快,但以后的维护你可能会晕!
 
我不喜歡用table,我常用query.
edit1.Text = query.fields[index].AsString;
 
if edit1.text <> '' then
begin
if (edit1.Text = ADOQuery2id.AsString ) and
(edit2.text = ADOQuery2idmima.asstring) then
begin
form3.visible := false;
form1.show;
end
else if
(edit1.text = ADOQuery3id.asstring) and
(edit2.text = ADOQuery3idmima.asstring) then
begin
form3.Visible := false;
form5.show;
end

else if
(edit1.Text = ADOQuery1id.AsString) and
(edit2.text = ADOQuery1idmima.asstring) then
begin
form3.Visible := false;
form4.show;
end
else
messagedlg ('输入有误!',mterror,[mbok],0)
end
else messagedlg('请您输入!',mterror,[mbok],0);
以上是修改后的代码。还有咧。错误信息。楼上怎么搞的。
[Error] Unit3.pas(56): Undeclared identifier: 'ADOQuery2id'
[Error] Unit3.pas(56): ')' expected but identifier 'AsString' found
[Error] Unit3.pas(63): Undeclared identifier: 'ADOQuery3id'
[Error] Unit3.pas(63): ')' expected but identifier 'asstring' found
[Fatal Error] Project1.dpr(14): Could not compile used unit 'Unit3.pas'


 
ADOQuery2id.AsString 换成 adoquery2.fieldbyname('id').asstring
其他类似
 
來遲了![:(]
 
最后修改的代码。 我输入的可是从数据库粘贴的值呀!为什么它总是执行if表达式为假的部分
if edit1.text <> '' then
begin
if (edit1.Text = StringField1.AsString ) and
(edit2.text = StringField2.AsString) then
begin
form3.visible := false;
form1.show;
end
else if
(edit1.text = StringField3.AsString) and
(edit2.text = StringField4.AsString) then
begin
form3.Visible := false;
form5.show;
end

else if
(edit1.Text = ADOQuery1id.AsString) and
(edit2.text = ADOQuery1idmima.AsString) then
begin
form3.Visible := false;
form4.show;
end
else
messagebox(self.Handle,'输入有误!','提醒',mb_ok);
end
else messagebox(self.Handle,'请您输入!','提醒',mb_ok);


end;
 
if edit1.text <> '' then
begin
if (edit1.Text = StringField1.AsString ) and
(edit2.text = StringField2.AsString) then
begin
form3.visible := false;
form1.show;
end
else if
(edit1.text = StringField3.AsString) and
(edit2.text = StringField4.AsString) then
begin
form3.Visible := false;
form5.show;
end

else if
(edit1.Text = ADOQuery1.fieldbyname('id').AsString) and
(edit2.text = ADOQuery1.fieldbyname('idmima').AsString) then
begin
form3.Visible := false;
form4.show;
end
else
messagebox(self.Handle,'输入有误!','提醒',mb_ok);
end
else messagebox(self.Handle,'请您输入!','提醒',mb_ok);


end;
 
总是执行假的原因是你的判断条件不太正确,不信你跟踪一下。
你要这样写
if Trim(edit1.Text) = Trim(StringField1.AsString) then ...
 

Similar threads

I
回复
0
查看
458
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部