100 分求助,刚刚开始学BCB 编程!!!

nkwen 2003-01-06 03:27:34


1. 在 某个事件过程中,如何调用 另外一个 事件


void __fastcall TfrmJSSJ::FormCreate(TObject *Sender)
{
cboProductChange (); // ?? 是这样的调用吗? 好像不怎么对哦
}


void __fastcall TfrmJSSJ::cboProductChange(TObject *Sender)
{
// 对 组合框 进行 初始化

}


2. 在工具栏上,有一个按钮是有下拉功能的, 可以把它的下拉 设置为一个弹出菜单,

但是 当用户 单击下拉菜单时, 执行的代码 应该在哪个地方添加 ?

3. 数据库操作的错误

为什么我在对数据库的记录 进行编辑时,老是报错,说,数据集是只读的?

数据显示的代码是 :




try {
QueryGYLX1->Close();
QueryGYLX1->SQL->Clear() ;

String S_sql;
S_sql="select * from GYLXBT";

S_sql+=" where PRODUCT_NO=:ssProductNo and PART_NO=:ssPartNo";



QueryGYLX1->SQL->Add(S_sql) ;

QueryGYLX1->ParamByName("ssProductNo")->AsString=strCurProductNo;
QueryGYLX1->ParamByName("ssPartNo")->AsString=strCurPartNo;

QueryGYLX1->Open();

if (QueryGYLX1->RecordCount==0)
{
ShowMessage(" 数据库中暂时没有该零件的工艺路线!!");
}
}
catch (Exception &exception)
{
ShowMessage("数据库操作错误!");
}


数据能正常显示


数据修改 按钮的代码是:



DBEditBlank01->ReadOnly =false; // DBEditBlank01 绑定到某个字段

QueryGYLX1->RequestLive =true;

QueryGYLX1->Edit() ;


可是还是报错,说 数据集 QueryGYLX1 是只读的


请问 到底问题处在哪里?


另外 : 数据编辑 的命令是不是:

QueryGYLX1->RequestLive =true;

还是

QueryGYLX1->Edit() ; ????

更新的命令用:
QueryGYLX1->UpdateRecord();

还是
QueryGYLX2->Post() ; ???


4 另外,谁有 数据库操作方面的源码,能否给我一些,我一定加分的



多谢 :)
...全文
19 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
binbin 2003-01-06
  • 打赏
  • 举报
回复
cboProductChange (); // ?? 是这样的调用吗? 好像不怎么对哦
==>
cboProductChange (NULL);
或cboProductChange(Sender);
看清楚方法的参数再调用啊.
kk_liwei 2003-01-06
  • 打赏
  • 举报
回复
应该可以的。
你先自己试一下!
nkwen 2003-01-06
  • 打赏
  • 举报
回复
谢谢诸位

to : kk_liwei(无从)


我用的是 WIN 2K Server + bcb 6.0 + access

表名和字段名都是大写的

access 中我没有作更改,应该可以更新的吧
netsys2 2003-01-06
  • 打赏
  • 举报
回复
解答:
1.
调用方法是这样的,但是你的例子不对,因为你把他放在FormCreate中,那时页面要素都没有产生当然就回报错,如果你放在
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
cboProductChange ();
}则没有问题。

2。双击菜单,在菜单的Event->Action中添加

3.QUERY查询的结果不能直接修改,用SQL的UPDATE指令

4。

增加:
DM->Query1->Close();
DM->Query1->SQL->Clear();
DM->Query1->SQL->Add("insert into Addbook.DB ");
DM->Query1->SQL->Add("values(:NAME,:TEL)");
DM->Query1->ParamByName("NAME")->AsString = "myname";
DM->Query1->ParamByName("TEL")->AsString = "1234567";
DM->Query1->ExecSQL();

删除:
DM->Query1->Close();
DM->Query1->SQL->Clear();
DM->Query1->SQL->Add("delete from Addbook.DB ");
DM->Query1->SQL->Add("where NAME = '123'" );
DM->Query1->ExecSQL();

修改:
DM->Query1->Close();
DM->Query1->SQL->Clear();
DM->Query1->SQL->Add("update Addbook.DB ");
DM->Query1->SQL->Add("set TEL='" + newTel +"'");
DM->Query1->SQL->Add("where NAME = 'myname'" );
DM->Query1->ExecSQL();

查询

DM->Query1->Close();
DM->Query1->SQL->Clear();
DM->Query1->SQL->Add("select * from Addbook.DB ");
DM->Query1->SQL->Add("where NAME = 'myname'" );
DM->Query1->Open();

if( !DM->Query1->RecordCount )
return false;

for(int i=0;i<DM->Query1->RecordCount;i++)
ShowMessage(DM->Query1->FieldByName("NAME")->AsString);


kk_liwei 2003-01-06
  • 打赏
  • 举报
回复
我的环境是WIN2000 + C++BUILDER + ORACLE8。17
kk_liwei 2003-01-06
  • 打赏
  • 举报
回复
1.你的数据库是否支持Query更新
2.你的表名和字段名是否大写
下面是很久以前我写的代码(应该还可以用),你参考一下。
void __fastcall TForm1::DBTemplateUpdate(AnsiString fid)
{
AnsiString strSQL="";
strSQL="select XYRBH,TEMPLATE,JH,LRSJ from ZW where XYRBH='"+fid+"'";
//允许该Query写
Query1->RequestLive=true;
Query1->SQL->Clear();
Query1->SQL->Add(strSQL);
Query1->Active=true;

Query1->First();
//将该Query置为可写
Query1->Edit();
Query1TEMPLATE->LoadFromFile("c:\\finger.tpl");
Query1->FieldByName("JH")->AsString=MainForm->userid;
Query1->FieldByName("LRSJ")->AsString=DBGetDate();
Query1->Post();
Query1->RequestLive=false;
Query1->Active=false;
}
nkwen 2003-01-06
  • 打赏
  • 举报
回复
请问: bravers1111(bravers):


用什么另外的控件和Query关联呢?

这样我就不能按照我的要求 获得指定的数据记录了
bravers1111 2003-01-06
  • 打赏
  • 举报
回复
Query查出的东西是不能修改的,要用另一个控件和他关联。具体你查一下帮助就知道了~
wildhorse01 2003-01-06
  • 打赏
  • 举报
回复
www.chinabcb.com

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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