1. 数据窗口Update Properties中数据更新属性Where Clause For Update/Delete有三个选项:
? Key Columns
? Key And Updateable Columns
? Key And Modified Columns
假设对表KHDA(客户档案)进行更新,该表有三个字段(如下),三个字段都具有Updateable属性,请分别写出使用以上三个选项时数据窗口执行Update时发送到数据库要求进行数据更新的SQL语句。(15分)
Name Code Type 原来的数据 更新操作
客户ID KHID(主键) Numeric(10) 1 不修改
客户代码 KHDM Varchar(10) 001 不修改
客户名称 KHMC Varchar(40) 张三 改为“李四”
? Key Columns
UPDATE KHDA SET KHMC = ‘李四’ Where KHID = ‘1’
? Key And Updateable Columns
Update KHDA SET KHMC = ‘李四’ Where KHID=’1 AND KHDM=’001’ AND KHMC= ‘张三’
? Key And Modified Columns
Update KHDA set KHMC = ‘李四’ Where KHDM=’001’ AND KHMC= ‘张三’
2. 数据窗口更新函数Update()使用语法如下:
dwcontrol.Update ( { accept {, resetflag } } )
请在下表中填写当accept、resetflag为以下值时的含义。(10分)
值 含义
accept = True 执行acceptText(),如果没有通过数据有效性验证,则取消更新
accept = False 不执行acceptText()
resetflag = True 复位更新标志
resetflag = False 不复位更新标志
3. 当执行SQL语句时,用sqlca.sqlcode是否等于0判断是否执行成功,如果不成功,可用sqlca.sqlerrtext获得数据库返回的错误信息。但当我们用数据窗口更新时(语句为:dw_1.update()),用sqlca.sqlerrtext是得不到数据库返回的错误信息的。请写出用数据窗口更新数据时,如何才能得到数据库返回的错误信息?(5分)
long ll_sqlcode
string ls_errtext,ls_inf
ll_sqlcode = SQLCA.SQLCODE //获取错误代码
ls_errtext = SQLCA.SQLERRTEXT
IF dw_main.Update() = 0
then
MessageBox(title,ls_inf + &
'~r 错误代码:' + STRING(ll_sqlcode) + &
'~r 错误信息:' + ls_errtext,Stopsign!)
Return -1
END IF
4. 当多个数据窗口在更新时需要对事务进行控制事务以确保数据的完整性,假设有两个数据窗口dw_1、dw_2需要同时更新,若其中一个失败则需要进行回滚,请编写同时更新两个数据窗口的代码。(10分)
long ll_sqlcode
string ls_errtext,ls_inf
ll_sqlcode = SQLCA.SQLCODE //获取错误代码
ls_errtext = SQLCA.SQLERRTEXT
IF dw_1.update() = 1 and dw_main.Update() = 1 THEN //更新成功
COMMIT ;
MessageBox('提示','数据库更新成功!')
Return 1
ELSE //更新失败
ROLLBACK ;
MessageBox('错误','数据库更新失败!' + &
'~r 错误代码:' + STRING(ll_sqlcode) + &
'~r 错误信息:' + ls_errtext,Stopsign!)
Return -1
END IF
5. 在编写程序时需要对变量命名进行规范,一般根据变量的作用范围及变量类型在变量名前增加前缀,请在下表中填写你认为比较规范的变量命名前缀。(10分)
String Integer Long Date
全局 gs_ Gi_ Gl_ Gdt_
共享 Ss_ Si_ Sl_ Sdt_
实例 Is_ Ii_ Il_ Idt_
局部 Ls_ Li_ Ll_ Ldt_
参数 :Ls_ :Li_ :li_ :ldt_
6. 请编写一个日期转换函数,要求将日期转换成中文写法,函数参数名:ad_CurDate。如传入:2002.8.12,返回:“二零零二年八月十二日 星期一”。(30分)
Integer li_year
Integer li_month
Integer li_day
String ls_object
String ls_year
String ls_number[32]
Integer li_o b j e c t
String ls_result
int t
ls_number[1] = "零"
ls_number[2] = "一"
ls_number[3] = "二"
ls_number[4] = "三"
ls_number[5] = "四"
ls_number[6] = "五"
ls_number[7] = "六"
ls_number[8] = "七"
ls_number[9] = "八"
ls_number[10] = "九"
ls_number[11] = "十"
ls_number[12] = "十一"
ls_number[13] = "十二"
ls_number[14] = "十三"
ls_number[15] = "十四"
ls_number[16] = "十五"