with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from MST_USER where USERID = ''11'' ');
Open;
if ADOQuery1.RecordCount = 0 then
begin
MessageDlg('無データ !',mtError,[mbOK],0);
close;
end
else
begin
Close;
SQL.Clear;
SQL.Add(' update MST_USER set PASSWORD = ''crazyliyang''');
SQL.Add(' where USERID = ''11'' ');
ExecSQL;//×××××××××××××××××××××××在这出错了,走不动了!不知道为什么
MessageDlg('Successful !',mtError,[mbOK],0);
Close;
SQL.Clear;
SQL.Add('insert into MST_USER values(''liyang'',''liyang'') ');
ExecSQL;
MessageDlg(' Successful1 !',mtError,[mbOK],0);
Close;
SQL.Clear;
SQL.Add('update MST_USER set PASSWORD = ''crazyliyang'' ') ;
ExecSQL;
MessageDlg(' Successful2 !',mtError,[mbOK],0);
end;
end;
烦烦!谁能帮我解决一下!咋样ADO数据控件做连续的操作呢?以上这样写是有问题的!
begin
Close;
SQL.Clear;
SQL.Add('select * from MST_USER where USERID = ''11'' ');
Open;
if ADOQuery1.RecordCount = 0 then
begin
MessageDlg('無データ !',mtError,[mbOK],0);
close;
end
else
begin
Close;
SQL.Clear;
SQL.Add(' update MST_USER set PASSWORD = ''crazyliyang''');
SQL.Add(' where USERID = ''11'' ');
ExecSQL;//×××××××××××××××××××××××在这出错了,走不动了!不知道为什么
MessageDlg('Successful !',mtError,[mbOK],0);
Close;
SQL.Clear;
SQL.Add('insert into MST_USER values(''liyang'',''liyang'') ');
ExecSQL;
MessageDlg(' Successful1 !',mtError,[mbOK],0);
Close;
SQL.Clear;
SQL.Add('update MST_USER set PASSWORD = ''crazyliyang'' ') ;
ExecSQL;
MessageDlg(' Successful2 !',mtError,[mbOK],0);
end;
end;
烦烦!谁能帮我解决一下!咋样ADO数据控件做连续的操作呢?以上这样写是有问题的!
解决方案 »
- 关于两层和三层程式对internet上应用在访问速度上的区别.......?
- 我没有分了那们老大能教我怎样增加分吗?除了每天登陆外
- 不知大家都在想什么?我反正想散分了,
- 小字体环境下写的程序到大字体环境下,一塌糊涂,怎么办?
- 编译时出现这样的错误,该怎么解决!
- 怎么样能够屏蔽掉WINDOW的某些功能键?
- 出現 作業系統無法支援選取的排序法則 錯誤,誰見到過?
- @@@@@@@@一个超难的问题 动态改变报表字体 QuickRep@@@@@@@@@@@
- 弹出一子窗口后,想用按ESC自动关闭该窗口,如何实现?如何捕捉这按键事件??谢谢!
- 关闭程序时,Eof或bof一个为真,或当前记录被删除,(我用的ADOTable)
- Delphi7 WebService SOAP客户端连接Tomcat SOAP服务器,有的电脑能够成功,有的电脑报错。
- 请各位前辈看看我这段DLL远程注入哪出了问题
如果一定要这么干,试着自行设置ADOQuery.Commandtype,具体设置方式参考帮助
我用的下面的代码,是delphi7procedure TForm1.btn1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from b_teacher where code = ''001'' ');
Open;
if ADOQuery1.RecordCount = 0 then
begin
MessageDlg('無データ !',mtError,[mbOK],0);
close;
end
else
begin
Close;
SQL.Clear;
SQL.Add(' update b_teacher set PASSWORD = ''cra''');
SQL.Add(' where code = ''001'' ');
ExecSQL;//×××××××××××××××××××××××在这出错了,走不动了!不知道为什么
MessageDlg('Successful !',mtError,[mbOK],0);
Close;
SQL.Clear;
SQL.Add('insert into b_teacher(code,password) values(''liyang'',''liyang'') ');
ExecSQL;
MessageDlg(' Successful1 !',mtError,[mbOK],0);
Close;
SQL.Clear;
SQL.Add('update b_teacher set PASSWORD = ''cra'' ') ;
ExecSQL;
MessageDlg(' Successful2 !',mtError,[mbOK],0);
end;
end;end;
阻塞的现象,ExecSQL方法处就停了,设的断点就走不动了!不知道咋处理
如果不行,你这段代码可以用存储过程来实现。
或者
sql.add('declare @i int');
sql.add('select @i=count(*) from MST_USER where USERID = ''11''');
sql.add('if @i>0 then ');
SQL.Add(' update MST_USER set PASSWORD = ''crazyliyang''');
SQL.Add(' where USERID = ''11'' ');
SQL.Add('insert into MST_USER values(''liyang'',''liyang'') ');
SQL.Add('update MST_USER set PASSWORD = ''crazyliyang'' ') ;
....
ExecSQL;大概是这个意思,我没有仔细写。这样与数据库只交互一次,业务都是在数据库内完成的,也可以加事务。
ADOQuery.CommandtypeadCmdUnspecified -1 不指定命令类型的参数。
adCmdText 1 按命令或存储过程调用的文本定义计算 CommandText。
adCmdTable 2 按表名计算 CommandText,该表的列全部是由内部生成的 SQL 查询返回的。
adCmdStoredProc 4 按存储过程名计算 CommandText。
adCmdUnknown 8 默认值。指示 CommandText 属性中命令的类型未知。
adCmdFile 256 按持久存储的 Recordset 的文件名计算 CommandText。仅与 Recordset.Open 或 Requery 使用。
adCmdTableDirect 512 按表名计算 CommandText,该表的列被全部返回。仅与 Recordset.Open 或 Requery 使用。如需使用 Seek 方法,Recordset 必须通过 adCmdTableDirect 打开。该值不能与 ExecuteOptionEnum 值 adAsyncExecute 结合。
SQL.Add(' update b_teacher set PASSWORD = ''cra''');》使整个程序的效率大大降低!出现了停滞,我以为是什么问题!谢谢大家!但还是想问一下楼里的前辈:ADOQuery.Commandtype
的用法,能举些例子就好,非常感谢!