adoquery數據操作

mydelphiworld 2004-07-13 09:50:01
procedure TForm4.Button1Click(Sender: TObject);
var
us,ps:string;

begin
try

us:=dbgrid1.SelectedField.DataSet.FieldByName('users').AsString;
ps:=dbgrid1.SelectedField.DataSet.FieldByName('passw').AsString;
////////////////////////////////////////////////////////////////////
Adoquery1.Connection:=dmliu.ADOConnection1;
ADOQuery1.Edit;

adoquery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add( 'update logtable set world='''+str+'''' ) ;
ADOQuery1.SQL.add( 'where users='''+us ) ;
ADOQuery1.SQL.add( '''and passw='''+ps+'''' ) ;
ADOQuery1.Prepared;
ADOQuery1.ExecSQL;
ADOQuery1.Active :=true;
Adoquery1.Connection:=dmliu.ADOConnection1;
ADOQuery1.Active :=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from logtable group by world,users,passw');
ADOQuery1.Prepared;
ADOQuery1.ExecSQL ;
ADOQuery1.Active :=true;
dbg.DataSource :=DataSource1;

///////////////////////////////////////////////////////////////////
except
raise exception.Create(' 操 作 錯 誤 !');
exit;
end;//try

end;
...全文
173 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghchen 2004-07-14
  • 打赏
  • 举报
回复
up
rongrongGsr 2004-07-14
  • 打赏
  • 举报
回复
两种可能,一种是你的数据库连接有问题,另外一种是你的SQL语句有问题,你可以把SQL语句单独拷贝出来先运行一遍试试。
chinaandys(剑风)说的空格也要注意一下
chinaandys 2004-07-14
  • 打赏
  • 举报
回复
ADOQuery1.SQL.add( ' update logtable set world='''+str+'''' ) ;
ADOQuery1.SQL.add( ' where users='''+us ) ;
ADOQuery1.SQL.add( ''' and passw='''+ps+'''' ) ;
加空格
lonaerd 2004-07-14
  • 打赏
  • 举报
回复
有这样写代码的吗?写个函数打开记录:

function TDataModule2.Opentable(sql:string):TADOQuery;
var Tmpquery:Tadoquery;
begin
Tmpquery:=tadoquery.Create(nil);
Tmpquery.Connection:=ADOConnection1 ;
Tmpquery.SQL.Add(sql);
Tmpquery.Open;
Opentable:=Tmpquery;


end;

调用:
var ado1:tadoquery;

ado1:=connect.Opentable("select * from tb1..");
ado1.close;
ado..SQL.Clear;
ado1:=connect.Opentable("select * from tb2..");




zhangfen 2004-07-14
  • 打赏
  • 举报
回复
var
us,ps,s:string;
begin
try

us:=dbgrid1.SelectedField.DataSet.FieldByName(users_id').AsString;
ps:=dbgrid1.SelectedField.DataSet.FieldByName('type').AsString;
////////////////////////////////////////////////////////////////////
Adoquery1.Connection:=dmliu.ADOConnection1;
//ADOQuery1.Edit;
s:='str';
adoquery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add( ' update logtable set world='+QuotedStr(s)) ;
ADOQuery1.SQL.add( ' where users='+QuotedStr(us )) ;
ADOQuery1.SQL.add( ' and passw='+QuotedStr(ps)) ;
ADOQuery1.Prepared;
ADOQuery1.ExecSQL;
//ADOQuery1.Active :=true;
Adoquery1.Connection:=dmliu.ADOConnection1;
ADOQuery1.Active :=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from logtable group by world,users,passw');
ADOQuery1.Prepared;
ADOQuery1.ExecSQL ;
ADOQuery1.Active :=true;
dbgrid1.DataSource :=DataSource1;

///////////////////////////////////////////////////////////////////
except
raise exception.Create(' 操 作 錯 誤 !');
exit;
end;

TADOQuery不是一个数据集控件,所有有些对TADODataSet能使用的操作不能对TADOQuery使用
chwdong 2004-07-14
  • 打赏
  • 举报
回复
Adoquery1.Connection:=dmliu.ADOConnection1;
ADOQuery1.close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add( 'update logtable set world='''+str+'''' ) ;
ADOQuery1.SQL.add( 'where users='''+us ) ;
ADOQuery1.SQL.add( '''and passw='''+ps+'''' ) ;
ADOQuery1.ExecSQL;
ADOQuery1.close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from logtable group by world,users,passw');
ADOQuery1.open;
dbg.DataSource :=DataSource1;

ADOQuery1.SQL.add( 'update logtable set world='''+str+'''' ) ;
:这类东西最好写成:
ADOQuery1.SQL.add( 'update logtable set world='+quotestr(str) ) ;
xiaolei_418 2004-07-14
  • 打赏
  • 举报
回复
procedure TForm4.Button1Click(Sender: TObject);
var
us,ps:string;
begin
try
us:=dbgrid1.SelectedField.DataSet.FieldByName('users').AsString;
ps:=dbgrid1.SelectedField.DataSet.FieldByName('passw').AsString;
Adoquery1.Connection:=dmliu.ADOConnection1;
adoquery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add( 'update logtable set world='''+str+'''' ) ;
ADOQuery1.SQL.add( '_ where users='''+us ) ;//加空格
ADOQuery1.SQL.add( '''_ and passw='''+ps+'''' ) ;;//加空格
ADOQuery1.Prepared;
ADOQuery1.ExecSQL;
ADOQuery1.Active :=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select world,users,passw'from logtable group by world,users,passw');//group by 错误
ADOQuery1.Prepared;
ADOQuery1.Active :=true;
dbg.DataSource :=DataSource1;
except
raise exception.Create(' 操 作 錯 誤 !');
exit;
end;//try
end;
viaboy 2004-07-14
  • 打赏
  • 举报
回复
procedure TForm4.Button1Click(Sender: TObject);
var
us,ps:string;
begin
try
us:=dbgrid1.SelectedField.DataSet.FieldByName('users').AsString;
ps:=dbgrid1.SelectedField.DataSet.FieldByName('passw').AsString;
Adoquery1.Connection:=dmliu.ADOConnection1;
adoquery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add( 'update logtable set world='''+str+'''' ) ;
ADOQuery1.SQL.add( 'where users='''+us ) ;
ADOQuery1.SQL.add( '''and passw='''+ps+'''' ) ;
ADOQuery1.Prepared;
ADOQuery1.ExecSQL;
ADOQuery1.Active :=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from logtable group by world,users,passw');
ADOQuery1.Prepared;
ADOQuery1.Active :=true;
dbg.DataSource :=DataSource1;
except
raise exception.Create(' 操 作 錯 誤 !');
exit;
end;//try
end;
wychero 2004-07-14
  • 打赏
  • 举报
回复
-----------------------------------------------------------------------------
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from logtable group by world,users,passw');
ADOQuery1.Prepared;
ADOQuery1.ExecSQL ;
-----------------------------------------------------------------------------
改为:
-----------------------------------------------------------------------------
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from logtable group by world,users,passw');
ADOQuery1.Prepared;
ADOQuery1.Open;
-----------------------------------------------------------------------------
OYGX 2004-07-14
  • 打赏
  • 举报
回复
up
lionlsl 2004-07-14
  • 打赏
  • 举报
回复
procedure TForm4.Button1Click(Sender: TObject);
var
us,ps:string;

begin
try
dbg.DataSource :=DataSource1;
// us:=dbgrid1.SelectedField.DataSet.FieldByName('users').AsString;改成
us:=Adoquery1.FieldByName('users').AsString;
// ps:=dbgrid1.SelectedField.DataSet.FieldByName('passw').AsString;改成
ps:=Adoquery1.FieldByName('passw').AsString;
////////////////////////////////////////////////////////////////////
if adoquery1.Active then adoquery1.close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add( 'update logtable set world='''+str+'''' ) ;
ADOQuery1.SQL.add( 'where users='''+us ) ;
ADOQuery1.SQL.add( '''and passw='''+ps+'''' ) ;
try
ADOQuery1.open;
execept
showmessage('出错1');
exit;
end;
// ADOQuery1.Active :=true;
// Adoquery1.Connection:=dmliu.ADOConnection1;
if ADOQuery1.Active then adoquery1.close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from logtable group by world,users,passw');
//ADOQuery1.Prepared;
//ADOQuery1.ExecSQL ;
try
ADOQuery1.open;
execept
showmessage('出错1');
exit;
end;
// ADOQuery1.Active :=true;
// dbg.DataSource :=DataSource1;放在最上边

///////////////////////////////////////////////////////////////////
except
//raise exception.Create(' 操 作 錯 誤 !');
showmessage(' 操 作 錯 誤 !');
exit;
end;//try

end;

我想这样没有问题了
mydelphiworld 2004-07-13
  • 打赏
  • 举报
回复
錯誤提示:cannot perform this a opration on a close dataset
mydelphiworld 2004-07-13
  • 打赏
  • 举报
回复
procedure TForm4.Button1Click(Sender: TObject);
var
us,ps:string;

begin
try

us:=dbgrid1.SelectedField.DataSet.FieldByName('users').AsString;
ps:=dbgrid1.SelectedField.DataSet.FieldByName('passw').AsString;
////////////////////////////////////////////////////////////////////

Adoquery1.Connection:=dmliu.ADOConnection1;
//ADOQuery1.Edit;
adoquery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add( 'update logtable set world='''+str+'''' ) ;
ADOQuery1.SQL.add( 'where users='''+us ) ;
ADOQuery1.SQL.add( '''and passw='''+ps+'''' ) ;
ADOQuery1.Prepared;
ADOQuery1.Insert;
ADOQuery1.ExecSQL;
ADOQuery1.Post;
// ADOQuery1.Active :=true;
//ADOQuery1.Edit;
//ADOQuery1.Insert;
// ADOQuery1.Post;
//ADOQuery1.UpdateRecord
// button2.Click;
/////////////////////////////////////////////////////////////////////////////

//Adoquery1.Connection:=dmliu.ADOConnection1;
ADOQuery1.Active :=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from logtable group by world,users,passw');
ADOQuery1.Prepared;
// ADOQuery1.ExecSQL ;

ADOQuery1.Active :=true;
dbg.DataSource :=DataSource1;

///////////////////////////////////////////////////////////////////
except
raise exception.Create(' 操 作 錯 誤 !');
exit;
end;//try

end;



錯誤提示:cannot perform this a opration on a dataset
mydelphiworld 2004-07-13
  • 打赏
  • 举报
回复
系統提示說: dataset isnot in insert or edit mode 錯誤
但我加入了: adoquery1.insert or adoquery1.edit 或者全部都有一樣的錯誤
Amuclan 2004-07-13
  • 打赏
  • 举报
回复
去掉这两行应该没错了 你再检查一下别的地方
mydelphiworld 2004-07-13
  • 打赏
  • 举报
回复
aiirii(ari-爱的眼睛) 不行啦運通不過
還是有錯誤:commandtext conn't return close a retset
aiirii 2004-07-13
  • 打赏
  • 举报
回复
Adoquery1.Connection:=dmliu.ADOConnection1;
/// ADOQuery1.Edit;// 这句去掉

adoquery1.Active:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add( 'update logtable set world='''+str+'''' ) ;
ADOQuery1.SQL.add( 'where users='''+us ) ;
ADOQuery1.SQL.add( '''and passw='''+ps+'''' ) ;
ADOQuery1.Prepared;
ADOQuery1.ExecSQL;
ADOQuery1.Active :=true;// 这句去掉
Adoquery1.Connection:=dmliu.ADOConnection1;// 这句去掉
ADOQuery1.Active :=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from logtable group by world,users,passw');
ADOQuery1.Prepared;
ADOQuery1.ExecSQL ;// 这句去掉
ADOQuery1.Active :=true;
dbg.DataSource :=DataSource1;
mydelphiworld 2004-07-13
  • 打赏
  • 举报
回复
有誰能告訴我錯在哪里嗎?????????????????????????????
附录:源程序 //-------------------主窗体 查询与浏览--------------------------------------- #include #pragma hdrstop #include "Unit1.h" #include "Unit2.h" #include "Unit3.h" #include "Unit4.h" #include "Unit5.h" #include "Unit6.h" #pragma package(smart_init) #pragma resource "*.dfm" TFmain *Fmain; bool onshow=false; __fastcall TFmain::TFmain(TComponent* Owner) : TForm(Owner) { } void __fastcall TFmain::N5Click(TObject *Sender) { Close();//退出程序 } void __fastcall TFmain::SpeedButton3Click(TObject *Sender) { DataModule3->ADOQuery1->First() ; StatusBar1->Panels->Items[0]->Text="数据指向第一个"; } void __fastcall TFmain::SpeedButton1Click(TObject *Sender) { DataModule3->ADOQuery1->Prior() ; StatusBar1->Panels->Items[0]->Text="数据指向上一个"; } void __fastcall TFmain::SpeedButton2Click(TObject *Sender) { DataModule3->ADOQuery1->Next() ; StatusBar1->Panels->Items[0]->Text="数据指向下一个"; } void __fastcall TFmain::SpeedButton4Click(TObject *Sender) { DataModule3->ADOQuery1->Last() ; StatusBar1->Panels->Items[0]->Text="数据指向最后"; } void __fastcall TFmain::Button2Click(TObject *Sender) { //添加新的数据 Fadd->Caption="添加数据"; DataModule3->ADOQuery1->Append() ; Fadd->ShowModal() ; } void __fastcall TFmain::FormClose(TObject *Sender, TCloseAction &Action) { //对退出程序做确认处理 if(MessageBox(this->Handle,"确定要退出吗?","提示",MB_YESNO+MB_ICONQUESTION) == IDNO) Action=caNone; } void __fastcall TFmain::N10Click(TObject *Sender) { AboutBox->ShowModal() ; //显示关于对话框 } void __fastcall TFmain::Button4Click(TObject *Sender) { //以下为查找语句 AnsiString sql; if(Edit1->Text=="")return; if( ComboBox1->Text =="精确")sql=" ='"+Edit1->Text+"';"; else sql=" like '%"+Edit1->Text+"%';"; sql="select * from renshi where "+ComboBox2->Text+sql; StatusBar1->Panels->Items[0]->Text=sql; DataModule3->ADOQuery1->Active =false; DataModule3->ADOQuery1->SQL->Clear(); DataModule3->ADOQuery1->SQL->Add(sql); DataModule3->ADOQuery1->Active =true; if(DataModule3->ADOQuery1->RecordCount==0) StatusBar1->Panels->Items[1]->Text="无符合条件数据"; else StatusBar1->Panels->Items[1]->Text="符合条件数据个数为:"+IntToStr(DataModule3->ADOQuery1->RecordCount); } void __fastcall TFmain::Button6Click(TObject *Sender) { //以下为显示所有数据 AnsiString sql; sql="select * from renshi;"; StatusBar1->Panels->Items[0]->Text="显示全部数据"; DataModule3->ADOQuery1->Active =false; DataModule3->ADOQuery1->SQL->Clear(); DataModule3->ADOQuery1->SQL->Add(sql); DataModule3->ADOQuery1->Active =true; if(DataModule3->ADOQuery1->RecordCount==0) StatusBar1->Panels->Items[1]->Text="无符合条件数据"; else StatusBar1->Panels->Items[1]->Text="数据总量为:"+IntToStr(DataModule3->ADOQuery1->RecordCount); } void __fastcall TFmain::Button1Click(TObject *Sender) { //刷新显示 DataModule3->ADOQuery1->Active =false; DataModule3->ADOQuery1->Active =true; } void __fastcall TFmain::N9Click(TObject *Sender) { //帮助内容 ShowMessage("\ 大家好,虽然只是一个简单的程序但是也要写帮助。\n\ 简单的操作如下:\n\ 一、打开程序。\n\ 二、可以进行数据的添加、删除、浏览、查找\n\ 三、关闭。\n\ 谢谢使用!\n\ "); } void __fastcall TFmain::Button3Click(TObject *Sender) { //数据删除操作 AnsiString printstr="确定删除编号为"+DataModule3->ADOQuery1->FieldByName("编号")->AsString+"的数据吗?"; if(MessageDlg(printstr,mtWarning,TMsgDlgButtons() << mbOK <ADOQuery1->Delete() ; StatusBar1->Panels->Items[0]->Text="数据已经删除"; } } void __fastcall TFmain::N3Click(TObject *Sender) { //更改显示字体 if(FontDialog1->Execute())Fmain->Font=FontDialog1->Font; } void __fastcall TFmain::N12Click(TObject *Sender) { //更改窗体颜色 if(ColorDialog1->Execute()) { Fmain->Color=ColorDialog1->Color;//主窗体 Fadd->Color=ColorDialog1->Color; //添加、修改窗体 } } void __fastcall TFmain::N13Click(TObject *Sender) { //更改数据域颜色 if(ColorDialog1->Execute()) DBGrid1->Color=ColorDialog1->Color; } void __fastcall TFmain::N11Click(TObject *Sender) { Fshow->QuickRep1->Preview();//打印数据 } void __fastcall TFmain::Button5Click(TObject *Sender) { Fadd->Caption="修改数据"; Fadd->ShowModal() ; //修改数据 } void __fastcall TFmain::FormShow(TObject *Sender) { if(onshow==false) { Fwelcome->ShowModal() ; onshow=true; return; } } //-------------------------------------------------------------------------- //------------系统封面------------------------------------------------------ #include #pragma hdrstop #include "Unit2.h" #include "Unit1.h" #pragma package(smart_init) #pragma resource "*.dfm" TFwelcome *Fwelcome; int logintime=15; //进入系统等待时间X秒 __fastcall TFwelcome::TFwelcome(TComponent* Owner) : TForm(Owner) { } void __fastcall TFwelcome::Timer1Timer(TObject *Sender) { if(logintime==0){ Timer1->Enabled=false; Close(); } logintime--; SpeedButton1->Caption ="进入("+IntToStr(logintime)+")"; } void __fastcall TFwelcome::SpeedButton2Click(TObject *Sender) { Application->Terminate() ; } void __fastcall TFwelcome::SpeedButton1Click(TObject *Sender) { logintime=15; Timer1->Enabled=false; Close(); } //-------------------------------------------------------------------------- //---------------------数据修改窗体----------------------------------------- #include #pragma hdrstop #include "Unit4.h" #include "Unit3.h" #pragma package(smart_init) #pragma resource "*.dfm" TFadd *Fadd; __fastcall TFadd::TFadd(TComponent* Owner) : TForm(Owner) { } void __fastcall TFadd::Button1Click(TObject *Sender) { if(DBEdit1->Text =="")return; DataModule3->ADOQuery1->Refresh() ; Close(); } void __fastcall TFadd::Button2Click(TObject *Sender) { DataModule3->ADOQuery1->Cancel() ; Close(); } void __fastcall TFadd::FormClose(TObject *Sender, TCloseAction &Action) { DataModule3->ADOQuery1->Cancel() ; } //--------------------------------------------------------------------------

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧