资源描述
C++Builder访问SQL Server2000数据库
一. 数据库操作中常用组件的功能及关系图
在C++ Builder程序设计时,若需要访问数据库,则要用到许多数据库相关的组件(控件),常见的数据库组件功能及关系如图 1所示:
存储过程组件
Connection
命令组件
Connection
连接组件
(功能:执行存储在服务器上的程序代码)
ADOStoredProc
ADOCommand
(功能:与数据库进行连接)
ConnectionString
(连接串属性指明数据库的类型、数据库名称及访问密码等)
(功能:通过SQL语句直接对数据进行添加、删除和修改等操作)
数据集组件
Connection
(功能:直接访问数据库中的数据)
数据源组件
DataSet
(功能:为数据组件提供数据来源)
数据组件
DataSource
(功能:显示并允许用户操作数据)
ADOTable、ADOQuery等
DataSource
DBEdit、DBGrid、DBLookupComboBox等
ADOConnection
图 1 C++ Builder数据库常用组件功能及关系图
二. 程序设计总体思想
为了充分展示C++ Builder访问数据库的强大功能,本实验总体设计思想可用图 2来表示。它具有以下特点:
l 展示C++ Builder访问SQL Server数据库的七种典型用法(七个模块)
l 每个实验模块均可独立设计与运行
l 学生可根据自身情况有选择地做其中几个模块或全部模块
图 2 实验总体设计
三. 实验指导
1. 实验准备(附加Engineering数据库)
确认SQL Serve2000的服务管理器已经正常运行。
启动SQL Server企业管理器,执行菜单命令“工具-所有任务-附加数据库”,出现以下“附加数据库”对话框,如图 3所示:
图 3 附加数据库对话框
点击按钮,在随后出现的“浏览现有的文件”对话框中,找到并选择“Engineering_Data.MDF”后,点击“确定”按钮,回到“附加数据库”对话框,点击“确定”按钮,出现图 4所示的对话框即表示附加完成:
图 4 附加完成对话框
2. 第一模块(数据显示及交互操作)
(1) 功能简介
显示数据库中的文本或图像数据;提供一个导航栏,并通过它允许用户对数据表进行插入、删除或修改等操作。
(2) VCL组件对象及布局
启动C++ Builder。在窗体上放置一个组框GroupBox、四个标签Label、一个数据库连接ADOConnection、一个表数据集ADOTable、一个数据源DataSource、三个数据编辑框DBEdit、一个数据图像DBImage和一个数据导航栏DBNavigator组件,此时设计界面如图 5所示:
图 5 初始设计界面
(3) 组件对象的属性设置
按表 1~ 表 5设置以上各VCL组件对象的属性。
表 1 组框与标签对象的属性设置
组件所属的选项卡
默认组件名
组件
AutoSize属性
Caption属性
Standard
GroupBox11
组框
数据显示及交互操作
Label1
标签
false
零件信息表
Label2
false
零件编号
Label3
false
零件名称
Label4
false
材料
表 2 数据库连接对象的属性设置
组件所属的选项卡
默认组件名
组件
Name属性
ConnectionString属性
LoginPrompt
Connected
ADO
ADOConnection1
数据库连接
Engineering
(设置方法见表下文字)
false
true
数据库连接组件对象的ConnectionString属性设置方法如下:选中该对象,在属性面板内找到ConnectionString,点击该属性值后面的按钮,会出现如图 6所示的“Form1->Engineering ConnectionString”对话框:
图 6 Form1->Engineering ConnectionString对话框
点击“Build…”按钮,会出现如图 7所示的“数据连接属性”对话框的“提供程序”页面:
图 7 “数据连接属性”对话框的“提供程序”页面
选择“Microsoft OLE DB Provider for SQL Server”列表行,并点击“下一步”按钮,则又出现如图 8所示的“数据连接属性”对话框的“连接”页面:
图 8 “数据连接属性”对话框的“连接”页面
按图 8输入服务器名称(local表示本地计算机,注意两边有括号),并选择相应的数据库,然后点击“确定”按钮,返回图 6所示的对话框,再点击“OK”按钮,完成属性设置。
表 3 表数据集对象的属性设置
组件所属的选项卡
默认组件名
组件
Name属性
Connection属性
TableName属性
Active属性
ADO
ADOTable1
表数据集
Parts
Engineering
零件信息表
true
表 4 数据源对象的属性设置
组件所属的选项卡
默认组件名
组件
Name属性
DataSet属性
DataAccess
DataSource1
数据源
DSParts
Parts
表 5 数据编辑框、数据图像与数据导航栏对象的属性设置
组件所属的选项卡
默认组件名
组件
DataSource属性
DataField属性
DataControls
DBEdit1
数据编辑框
DSParts
零件编号
DBEdit2
零件名称
DBEdit3
零件材料
DBImage1
数据图像
零件图形
DBNavigator1
数据导航栏
(4) 保存程序文件并做程序测试
点击C++Builder主工具栏上的“Save All”按钮,保存工程文件和窗体文件到指定的文件夹下。(这里应注意:所有的文件都应保存在同一个文件夹下)
程序测试。点击C++Builder主工具栏上的Run按钮 ,程序经过编译后自动生成EXE文件,并且立即运行。(程序运行后,可以在程序所提供的用户界面上直接修改数据;可以通过导航栏在表中各记录之间移动记录指针;可以插入或删除记录。虽然没有写一行程序代码,但却具有如此多的功能,组件对象功不可没。)
3. 第二模块(Master-Detail关系)
(1) 功能简介
本模块显示零件的加工工艺路线,其特点是提供一个组合框,允许用户从中选择零件(其实是零件编号),而一旦选择确定,程序将自动显示所选择零件的加工工艺路线。
(2) VCL组件对象及布局
在窗体上放置一个组框GroupBox、两个标签Label、两个表数据集ADOTable、两个数据源DataSource、一个数据查表组合框DBLookupComboBox和一个数据网格DBGrid组件,此时设计界面如图 9所示(本实验的全部七个模块共用一个数据库连接组件,以后不再说明。):
图 9 第二模块初始设计界面
(3) 组件对象的属性设置
按表 6~表 11顺序设置以上各VCL组件对象的属性。
表 6 组框与标签对象的属性设置
组件所属的选项卡
默认组件名
组件
AutoSize属性
Caption属性
Standard
GroupBox2
组框
Master-Detail关系
Label5
标签
false
零件工艺路线
Label6
false
零件编号
表 7 表数据集对象的属性设置
组件所属的选项卡
默认组件名
组件
Name属性
Connection属性
TableName属性
Active属性
ADO
ADOTable1
表数据集
Part
Engineering
零件信息表
true
ADOTable2
Paths
工艺路线表
表 8 数据源对象的属性设置
组件所属的选项卡
默认组件名
组件
Name属性
DataSet属性
DataAccess
DataSource1
数据源
DSPart
Part
DataSource2
DSPaths
Paths
为了能够实现自动显示用户所选择零件的加工工艺路线,还必须按表 9设置Name属性为“Paths”的表数据集的两个属性。
表 9 Paths表数据集对象的Master-Detail关系属性设置
Name属性
MasterSource属性
MasterFields属性
Paths
DSPart
零件编号
表 10 数据查表组合框对象的属性设置
组件所属的选项卡
默认组件名
组件
ListSource属性
ListField属性
KeyField属性
ADO
DBLookupComboBox1
数据查表组合框
DSPart
零件编号
零件编号
表 11 数据网格对象的属性设置
组件所属的选项卡
默认组件名
组件
DataSource属性
DataControls
DBGrid1
数据网格
DSPaths
保存并运行程序,发现数据网格可以正常显示用户所选择零件的工艺路线,但其第一列的宽度值过大,另外,显示的列也太多。下面做一些调整。
选中该数据网格对象,然后在属性面板中点击“Columns…”属性名后的按钮,出现“Editing DBGrid1->Columns”对话框(注意观察属性面板所发生的变化)。连续点击四次对话框中的按钮后,对话框的内容如图 10所示。
图 10 “Editing DBGrid1->Columns”对话框
选中其中第一行(0-TColumn),在属性面板中将其“FieldName”属性设置为“零件编号”,“Width” 属性设置为“60”。同理可设置其余三行的“FieldName”属性分别为“工序号”、“工步号”和“工步代码”。“Width”属性值酌情确定。
(4) 保存并运行程序
点击C++Builder主工具栏上的“Save All”按钮,保存所有程序文件。
点击C++Builder主工具栏上的Run按钮 ,运行程序。
4. 第三模块(数据查询-V带断面尺寸)
(1) 功能简介
本模块主要功能是根据用户所输入的V带型号,从数据库的“V带断面”数据表中查询出对应该型号的V带的顶宽(a)、断面高(h)、节宽(a0)、节高(y0)等断面尺寸值。
(2) VCL组件对象及布局
在窗体上放置一个组框GroupBox、一个图像Image、两个标签Label、一个编辑框Edit、一个查询数据集ADOQuery、一个数据源DataSource和一个数据网格DBGrid组件,设计界面如图 11所示:
图 11 第三模块初始设计界面
(3) 组件对象的属性设置
按表 12~表 17顺序设置以上各VCL组件对象的属性。
表 12 组框与标签对象的属性设置
组件所属的选项卡
默认组件名
组件
AutoSize属性
Caption属性
Standard
GroupBox3
组框
数据查询-V带断面尺寸
Label7
标签
false
V带型号
Label8
false
(A,B,C,D,E,F,O)
表 13 编辑框对象的属性设置
组件所属的选项卡
默认组件名
组件
Text属性
Standard
Edit1
编辑框
(空值)
表 14 图像对象的属性设置
组件所属的选项卡
默认组件名
组件
AutoSize属性
Stretch属性
Picture属性
Additional
Image1
图像
false
true
(设置为图片文件“V带断面.JPG”)
(图片文件“V带断面.JPG”应事先复制到程序所在的文件夹内。)
表 15 查询数据集对象的属性设置
组件所属的选项卡
默认组件名
组件
Name属性
Connection属性
ADO
ADOQuery1
查询数据集
VBelt
Engineering
表 16 数据源对象的属性设置
组件所属的选项卡
默认组件名
组件
Name属性
DataSet属性
DataAccess
DataSource1
数据源
DSVBelt
VBelt
表 17 数据网格对象的属性设置
组件所属的选项卡
默认组件名
组件
DataSource属性
DataControls
DBGrid2
数据网格
DSVBelt
(4) 编写编辑框(Edit1)对象的按键(KeyPress)事件过程
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if(Key==13) { //如果按了回车键
VBelt->Close(); //关闭查询数据集
VBelt->SQL->Clear(); // 清除原有的SQL属性
VBelt->SQL->Add("Select * from V带断面 where 型号=:xh"); //设置SQL属性(带参数)
VBelt->Parameters->ParamByName("xh")->Value = Edit1->Text ; //设置参数值
VBelt->Open(); //打开查询数据集
for(int i=0;i<5;i++) { //设置数据网格控件各列宽度
DBGrid2->Columns->Items[i]->Width=45;
DBGrid2->Columns->Items[i]->Alignment = taLeftJustify; //设置左对齐方式或taCenter;
}
Edit1->Clear(); //清除编辑框内的文本
}
}
(5) 保存程序文件并做程序测试
点击C++Builder主工具栏上的“Save All”按钮,保存所有程序文件。
点击C++Builder主工具栏上的Run按钮 ,运行程序。
在编辑框内输入要查询的V带型号(型号字母不区分大小写)后打回车键,下面的数据网格组件中会显示相应型号V带的顶宽、断面高、节宽、节高等断面尺寸值。
5. 第四模块(逐行处理数据集)
(1) 功能简介
本模块的功能是逐行处理一个表数据集中的记录,并把其中满足条件的记录显示在一个字符串网格控件中。本例同时演示了如何用非数据组件(前面第一至第三模块所用到的数据编辑框DBEdit、数据图像DBImage、数据网格DBGrid等都是数据组件)显示数据库中的数据。
(2) VCL组件对象及布局
在窗体上放置一个组框GroupBox、一个标签Label、一个字符串网格StringGrid、一个按钮Button和一个表数据集ADOTable组件,此时设计界面如图 12所示:
图 12 第四模块初始设计界面
(3) 组件对象的属性设置
按表 18~表 20顺序设置以上各VCL组件对象的属性。
表 18 组框、标签与命令按钮对象的属性设置
组件所属的选项卡
默认组件名
组件
AutoSize属性
Caption属性
Standard
GroupBox4
组框
逐行处理数据集
Label9
标签
false
顶宽在30~40之间的V带
Button1
命令按钮
执行动作
表 19 字符串网格对象的属性设置
组件所属的选项卡
默认组件名
组件
DefaultRowHeight
DefaultColWidth
RowCount
ColCount
Additional
StringGrid1
字符串网格
16
60
1
2
表 20 表数据集对象的属性设置
组件所属的选项卡
默认组件名
组件
Name属性
Connection属性
TableName属性
Active属性
ADO
ADOTable1
表数据集
Belts
Engineering
V带断面
true
(4) 编写按钮(Button1)对象的单击(Click)事件过程
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i=0; //计数器变量
Belts->First(); //将表数据集记录指针移到第一条记录
while (!Belts->Eof) { //如果记录指针尚未到达文件末尾(即指向某条记录)
float w = Belts->FieldByName("顶宽")->AsFloat; //取当前记录的“顶宽”字段值
if(w>=30 && w<=40) { //如果该值在30~40之间
i++; //计数器加1
StringGrid1->RowCount ++; //字符串网格组件的行数加1
StringGrid1->Cells[0][i] = Belts->FieldByName("型号")->AsString; //网格的第i行第0列
//显示“型号”字段的值
StringGrid1->Cells[1][i]= FloatToStr(w); //网格的第i行第1列显示“顶宽”字段的值
}
Belts->Next(); //将表数据集记录指针移到下一条记录
}
if (i>0) { //如果有顶宽在30~40之间的V带
StringGrid1->FixedRows=1; //设置网格组件的FixedRows(固定行)属性值为1
StringGrid1->Cells[0][0]="型号"; //网格的第0行第0列显示“型号”
StringGrid1->Cells[1][0]="顶宽"; //网格的第0行第1列显示“顶宽”
}
}
(5) 保存程序文件并做程序测试
点击C++Builder主工具栏上的“Save All”按钮,保存所有程序文件。
点击C++Builder主工具栏上的Run按钮 ,运行程序。
在程序界面上点击“执行动作”按钮,则字符串网格组件中应显示满足条件的两种型号的V带及顶宽值。
6. 第五模块(用命令组件向“V带断面”表中添加数据行)
(1) 功能简介
命令组件允许通过SQL语句直接操纵数据库,即对数据表进行插入、删除和修改等操作。本模块仅演示向表中添加数据行的操作,而数据的来源则由字符串网格组件提供(需要用户输入数据)。
(2) VCL组件对象及布局
在窗体上放置一个组框GroupBox、一个标签Label、一个编辑框Edit、一个字符串网格StringGrid、两个按钮Button和一个命令ADOCommand组件,此时设计界面如图 13所示:
图 13 第五模块初始设计界面
(3) 组件对象的属性设置
按表 21~表 23顺序设置以上各VCL组件对象的属性。
表 21 组框、标签、编辑框与按钮对象的属性设置
组件所属的选项卡
默认组件名
组件
Name属性
Text属性
Caption属性
Standard
GroupBox5
组框
用命令组件向“V带断面”表中添加数据行
Label10
标签
编辑单元格
Edit2
编辑框
CELL
(空串)
Button3
按钮
INSERT
添加行
Button4
按钮
SAVE
保存
表 22 字符串网格对象的属性设置
默认组件名
Name
DefaultRowHeight
DefaultColWidth
RowCount
ColCount
FixedRows
FixedCols
StringGrid2
SG
16
40
2
5
1
0
表 23 命令对象的属性设置
组件所属的选项卡
默认组件名
组件
Connection属性
ADO
ADOCommand1
命令
Engineering
(4) 编写各对象的事件过程
窗体(Form)对象的生成(Create)事件过程
void __fastcall TForm1::FormCreate(TObject *Sender) //自动填充字符串网格的第一行
{
SG->Cells[0][0]="型号";
SG->Cells[1][0]="顶宽";
SG->Cells[2][0]="断面高";
SG->Cells[3][0]="节宽";
SG->Cells[4][0]="节高";
}
字符串网格(SG)对象的单击(Click)事件过程
void __fastcall TForm1::SGClick(TObject *Sender)
{
CELL->Text = SG->Cells[SG->Col][SG->Row]; //将所选网格单元的内容复制到编辑框
CELL->SetFocus(); //令编辑框对象获得输入焦点
}
编辑框(CELL)对象的按键(KeyPress)事件过程
void __fastcall TForm1::CELLKeyPress(TObject *Sender, char &Key)
{
if(Key==13){ //如果在编辑框内打了回车键
SG->Cells[SG->Col][SG->Row] = CELL->Text; //将编辑框中的内容复制到所选网格单元
if (SG->Col<4) SG->Col ++; //自动选择下一个单元(便于用户连续输入数据)
CELL->SelectAll(); //将编辑框中的内容全部选中(目的是便于用户输入新数据)
}
}
“添加行”按钮(INSERT)对象的单击(Click)事件过程
void __fastcall TForm1::INSERTClick(TObject *Sender)
{
SG->RowCount++; //为字符串网格对象添加一行单元格
}
“保存”按钮(SAVE)对象的单击(Click)事件过程
void __fastcall TForm1::SAVEClick(TObject *Sender) //将字符串网格中的数据全部写入数据表中
{
int r,n=0; // r是循环变量,n是计数器(用于存储用户输入的有效数据的行数)
//设置命令组件的命令文本(带5个参数的SQL语句)
ADOCommand1->CommandText = "INSERT INTO V带断面 VALUES(:Model_Val,:Width_Val,:Height_Val,:Width2_Val,:Height2_Val)";
for(r=1;r<SG->RowCount;r++) //循环次数是已输入数据的行数(但并非每行都有效)
if(SG->Cells[0][r]!="") { //如果某行第一列不为空(则本行是有效数据)
n++; //计数器加1
//下面几行指定各参数的值,参数值取自每行中的单元格内容
ADOCommand1->Parameters->ParamByName("Model_Val")->Value = SG->Cells[0][r];
ADOCommand1->Parameters->ParamByName("Width_Val")->Value = SG->Cells[1][r];
ADOCommand1->Parameters->ParamByName("Height_Val")->Value = SG->Cells[2][r];
ADOCommand1->Parameters->ParamByName("Width2_Val")->Value = SG->Cells[3][r];
ADOCommand1->Parameters->ParamByName("Height2_Val")->Value = SG->Cells[4][r];
ADOCommand1->Execute() ; //执行命令
}
else break; //否则结束循环
ShowMessage(IntToStr(n)+"条记录已保存到数据库!"); //显示一条消息
}
(5) 保存程序文件并做程序测试
点击C++Builder主工具栏上的“Save All”按钮,点击C++Builder主工具栏上的Run按钮 。
在字符串网格组件对象中随意输入几行数据,然后利用第三模块的查找功能检查一下是否可以查到刚输入的数据行。
7. 第六模块(分别显示不同数据表中的数据)
(1) 功能简介
提供一个组合框,允许用户从中选择想要显示数据的机床类型,用数据网格组件显示用户所选择的机床型号及相关参数。
(2) VCL组件对象及布局
在窗体上放置一个组框GroupBox、两个标签Label、一个组合框ComboBox、一个表数据集ADOTable、一个数据源DataSource和一个数据网格DBGrid组件,此时设计界面如图 14所示:
图 14 第六模块初始设计界面
(3) 组件对象的属性设置
按表 24~表 28顺序设置以上各VCL组件对象的属性。
表 24 组框与标签对象的属性设置
组件所属的选项卡
默认组件名
组件
AutoSize属性
Caption属性
Standard
GroupBox6
组框
分别显示不同数据表中的数据
Label11
标签
false
机床类型
Label12
false
机床型号与参数
表 25 组合框对象的属性设置
组件所属的选项卡
默认组件名
组件
Items属性
ItemIndex属性
Standard
ComboBox1
组合框
(按行输入六类机床数据表的名称)
0
组合框对象的Items属性决定着组合框中要显示的列表项,其设置方法如下:点击该属性值右边的按钮,在随后出现的如图 15所示的对话框中,逐行输入六类机床数据表的名称。
图 15 String List Editor 对话框
表 26 表数据集对象的属性设置
组件所属的选项卡
默认组件名
组件
Name属性
Connection属性
TableName属性
Active属性
ADO
ADOTable1
表数据集
Machine
Engineering
车床数据
true
表 27 数据源对象的属性设置
组件所属的选项卡
默认组件名
组件
Name属性
DataSet属性
DataAccess
DataSource1
数据源
DSMachine
Machine
表 28 数据网格对象的属性设置
组件所属的选项卡
默认组件名
组件
DataSource属性
DataControls
DBGrid3
数据网格
DSMachine
(4) 编写组合框(ComboBox1)对象的单击(Click)事件过程
void __fastcall TForm1::ComboBox1Click(TObject *Sender)
{
Machine->Close(); //先关闭表数据集(否则无法更改其“表名”属性)
Machine->TableName = ComboBox1->Text ; //将其“表名”属性改为组合框中选中的机床类型
Machine->Open(); //再打开表数据集
}
(5) 保存程序文件并做程序测试
点击C++Builder主工具栏上的“Save All”按钮,保存所有程序文件。
点击C++Builder主工具栏上的Run按钮 ,运行程序。
从组合框中随意选择一种机床类型,则下方的数据网格对象中将显示相应机床的型号和参数。
8. 第七模块(调用带参存储过程)
(1) 功能简介
存储过程是存储在数据库(服务器)内的一段程序代码,用SQL Server内置的经过扩展了的SQL语言——Transact-SQL语言编写而成。存储过程在定义时可以带有输入参数和输出参数。本模块演示如何调用带输入参数和输出参数的存储过程。先在服务器上定义一个能根据型号(输入参数)计算其断面积(输出参数)的存储过程,然后在C++Builder中调用它。
(2) 在数据库(服务器)内定义存储过程
打开SQL Server2000的企业管理器,找到Engineering数据库的“存储过程”项,然后拉开“操作”菜单,选择“新建存储过程”菜单项,会出现如图 16所示的“新建存储过程”对话框:
图 16 “新建存储过程”对话框
在对话框的文本区域,输入以下程序代码(它是用Transact-SQL语言写成的):
CREATE PROCEDURE Area @model char(1) , @VArea float output /*输出参数后带有output关键字*/
AS /*该存储过程带两个参数,输入参数是V带型号,输出参数是V带断面积的平均值*/
BEGIN /*存储过程的开始*/
DECLARE @a int,@a0 float,@h float,@y0 float /*声明局部变量,对应V带断面的四个尺寸*/
DECLARE @s float,@sa float,@n int /*局部变量:断面积、平均断面积、计数器*/
DECLARE V_cursor CURSOR FOR SELECT 顶宽,节宽,断面高,节高 FROM V带断面 where 型号 like @model /*声明游标*/
SELECT @n=0,@sa=0 /*为局部变量赋初值*/
OPEN V_cursor /*打开游标*/
FETCH NEXT FROM V_cursor INTO @a,@a0,@h,@y0 /*从游标中提取数据行,存入四个变量中*/
WHILE @@FETCH_STATUS=0 /*循环检查游标提取状态*/
/*若系统变量@@FETCH_STATUS返回0值,则提取成功*/
BEGIN /*若从游标提取数据成功,则开始做以下工作(循环体的开始)*/
IF @a>0 set @n=@n+1 /*若顶宽数据大于0,则计数器加1*/
SET @s=(2*@a*@h*@y0-@h*@h*(@a-@a0))/2/@y0 /*求出某种型号V带断面积*/
SET @sa=@sa+@s /*累加各种型号的V带断面积*/
FETCH NEXT FROM V_cursor INTO @a,@a0,@h,@y0 /*再从游标提取下一行数据*/
END /*若从游标提取数据成功,所做工作至此结束(循环体的结束)*/
CLOSE V_cursor /*关闭游标*/
DEALLOCATE V_cursor /*释放游标所占用的内存*/
SET @sa=@sa/@n /*根据计数器的计数值,求出各种型号V带断面积的平均值*/
SET @VArea=@sa /*将此平均值赋给存储过程的输出参数(若用户调用存储过程,返回值即此)*/
END /*存储过程的结束*/
GO
此时对话框应为如图 17所示的内容:
图 17 输入完成后的对话框
对以上存储过程,做两点说明:
(1) 存储过程的名称为Aear
(2) 自定义的局部变量或参数必须以@开头
(3) Transact-SQL语言不区分大小写
(4) 存储过程的每行都做了注释,注释语法与C语言相同
(5) 第13行代码:“SET @s=(2*@a*@h*@y0-@h*@h*(@a-@a0))/2/@y0”,是在利用以下公式求V带断面积:
式中,a-顶宽;
h-断面高
a0-节宽
y0-节高
最后,点击对话框中的“确定”按钮,完成存储过程的建立。
(3) VCL组件对象及布局
接着做C++Builder程序。
在窗体上放置一个组框GroupBox、三个标签Label、一个编辑框Edit、一个按钮Button、一个查询数据集ADOQuery、一个数据源DataSource、一个数据查表组合框DBLookupComboBox和一个存储过程ADOStoredProc组件,此时设计界面如图 18所示:
图 18 第七模块初始设计界面
(4) 组件对象的属性设置
按表 29~ 表 33顺序设置以上各VCL组件对象的属性。
表 29 组框与标签对象的属性设置
组件所属的选项卡
默认组件名
组件
Name属性
Text属性
Caption属性
Standard
GroupBox7
组框
调用带参存储过程
Label13
标签
功能:求V带断面积
Labe
展开阅读全文