感觉这几天写程序特来劲,不知道为什么?
或许是一时冲动吧,因此我特抓紧这一把火
这三天,唉,真是一天16个小时都在看C++ Builder和写程序
今天完成了数据库的连接、添加、删除数据记录
其实这些在昨天已经做了一些,今天主要是添加记录的操作
下午查删除数据记录的方法
本来的想法是找到DBGrid的行号,然后根据这个行号,用SQL 语句来操作删除数据记录
查了好半天书,到头来一个Delete()命令就解决了,真是绕了一个大圈子哟!
下面是程序中的数据操作部分的全部思想:
在主窗体内放置于一个TQuery和TDataSource组件
1、设置TQuery的DatabaseName为数据库名字
2、设置TDataSource的DataSource为TQuery
3、在TQuery内用SQL 语句操作数据库
一、打开数据库用如下代码:
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("Select * from import order by 编号"

;
Query1->Open();
二、添加记录也是同理,执行如下指令即可:
s="insert into product(产品编号,产品名称,产品规格,计量单位,供货单位,入库单价,销售单价,入库折扣,销售税金)";
s=s + " values('"+ NOEdit->Text +"','"+ TitleEdit->Text +"','"+ SpecEdit->Text +"','"+ UnitEdit->Text +"','"+ ProvEdit->Text +"','"+ value1 +"','"+ value2 +"','"+ value3 +"','"+ value4 +"')";
MainFrm->Query1->Close();
MainFrm->Query1->SQL->Clear();
MainFrm->Query1->SQL->Add(s);
MainFrm->Query1->ExecSQL();
由于在设计数据时,我除了自动编号字段外,其它全部采用文本字段类型,因此在添加数据记录前加上了如下代码:(作用如果入库单价、销售单价、入库折扣和销售税金为空,则为他们赋0初值;)
String s,value1,value2,value3,value4;
if(IupEdit->Text==""

{
value1=0;
}
else
{
value1=IupEdit->Text;
}
if(SupEdit->Text==""

{
value2=0;
}
else
{
value2=SupEdit->Text;
}
if(AgioEdit->Text=="")
{
value3=0;
}
else
{
value3=AgioEdit->Text;
}
if(CessEdit->Text=="")
{
value4=0;
}
else
{
value4=CessEdit->Text;
}
三、删除记录最简单,但我绕了花了很长时间去考虑如何做,
其实只要一句:Query1-Delete();即可。它会自动删除当前选择记录。
由于在程序中我只放置了一个TQuery组件,但需要存取Access内的四个数据表,所以在使用时需要修改SQL字段值,然后执行Add()即可。
PS:明天将可能写修改及各表格之间的互相转换等模块。听说这一切都很简单,而报表的打印制作是最复杂的,(对于C++ Builder来说)