摘要介绍各月水量的计算方法,探讨北方片水文资料整编程序,包括注册表的操作、数据库服务器的配置、数据库的查询、成果的Excel输出,以为深入了解水文资料整编技术提供参考。
Ib&e}rx}0 关键词北方片水文资料整编程序;水量计算;体会
2Za-@|Z0 P;^?5k#Xsx0 在水文调查资料整编过程中,还原计算需要各月水量值,2007年以前辽宁水文资料整编使用辽宁水文资料整编程序,该程序具有计算各月水量的功能[1]。从整编2008年水文资料开始,辽宁使用了北方片全国统编水文资料整编程序,该程序不提供计算各月水量的功能。在进行水文调查资料整编时,需要用水文资料整编中的成果表《逐日平均流量表》逐日相加(累计值单位:m3/s),再乘以日秒数8.64万s,得到各月水量值(单位:万m3),相加可选用Excel 列求和功能或使用计算器累加,计算方法十分烦琐。为解决水文调查资料整编水量还原对各月水量的需要,现介绍一种利用程序计算各月水量的方法,该方法适合全国统编的北方片整编程序计算环境,是在北方片水文资料整编的基础上,通过程序在成果数据库中读取逐日平均流量值,计算各月流量总数,输出各月水量表,输出格式与以前使用程序计算的结果相同。
怎么发表论文 n|-B!Tb
zH9q@U?0 1基本思路
中国论文网Hm$Q3wy-H;A K 北方片水文资料整编程序,计算逐日流量结果保存在数据库中及Excel成果表中。程序可以在数据库中读取,也可以在Excel成果表中读取。在Excel成果表中读取数据要知道成果表存放在哪个目录中,该目录位置信息可以通过北方片程序读出,也可以在数据库表COM_PATHSET中得到[2-3]。通过北方片程序读出要手动操作,十分烦琐;另外,程序操作Excel速度比较慢, 要尽量避免操作Excel。在COM_PATHSET表中读取要连接数据库,对于不同的使用者该目录有可能不同。
q`%D4V"j\y@ dt0 在数据库中直接读取流量日表数据,首先,要知道数据库的配置参数,用来连接数据库,北方片水文资料整编程序数据库配置参数保存在注册表中,根键 “hkey_local_machine”,子键“software\田中岳\北方片整汇编软件”,“linkset”项键值保存数据库连接字。其次,要了解数据库中流量日表在数据库中的位置,逐日流量数据保存在数据库表sou_zcgb_qal中;该表的结构中stcd字段是站号,yr字段是年份,yy 是月份,d01,d02,d03,……,d31分别表示1日、2日、3日,……、31日平均流量。
职称发表论文中国论文网dO2zZ0i#AF%w 2实现方法
x y
f5I0l S'O/W0 获取数据库配置参数,使用Delphi7.0语言读取注册表中数据库配置参数,配置数据库的程序段如下:
hMp9O,w_H0 Procedure TForm1.FormCreate(Sender: TObject);
%\$mxt{?7TQ0 var
中国论文网_8GVcbRb8?$}D registry1:tregistry;// 注册注册表对象
'WdA*bPd0 s:string;
([U:c0fB0 Begin
中国论文网t&@^9njDy@ try
中国论文网 q$H(@$um
g registry1:=tregistry.Create;// 创建注册表对象
中国论文网F(j4^#Z2\6w:Ou with registry1 do
中国论文网w)a#S:X6n begin
[;n/rkQ&`0 rootkey:=hkey_local_machine;// 确定根键
中国论文网JV+XC%E9@_v!` // 注册子键software\田中岳\北方片整汇编软件
中国论文网1m|I*E(Qs if openkey('software\田中岳\北方片整汇编软件',false) then
-QV:J'd:{1m'_0 s:=readstring('linkset');// 读 linkset 键值
+v q`B8{Ki0|"F&H
v0 end;
Us#t'T [Xke t0 ADOConnection1.ConnectionString:=s;//数据库连接字设置
中国论文网-I%Dr!MV-~3`O
a
p except
中国论文网L1Bw1G.M application.MessageBox('读取注册表数据失败','提示信息',64);
中国论文网-Jz&\%yYl end;
D[!AYv
b"v0 registry1.Destroy;// 释放注册表对象
中国论文网\
v%c'hpjZ` end;
中国论文网6N*f*_sk pHK$k 逐日流量数据查询,要查询某年某站的逐日流量,在配置好数据库的情况下,查询逐日流量的程序关键语句如下:
X\i/yE x0 with adoquery1 do
Xp.F|mnwt O$]0begin
?P7i2yO_
R!t
o0 close;sql.Clear;
中国论文网j5HE0as
I/pk!Qz sql.Add('select stcd 站号,yr 年份,yy 月,d01,d02,d03,d04,d05'+
a1S Fl"O,nGn0 ',d06,d07,d08,d09,d10,d11,d12,d13,d14,d15,d16,d17,d18,'+
中国论文网e!{@dKp3h%h 'd19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,+
(`R-PR5\0 ′ from sou_zcgb_qal');
&QL-Mb4{
s0 sql.Add('where (stcd=:stcd1) and (yr=:yr1)');
2W_#o2Ra
Z3Vmpx
^0 sql.Add('order by yy');
M1P
D/Nu7_]0 parameters.ParamByName('stcd1').Value:=edit1.Text;
中国论文网i+j8E_(R parameters.ParamByName('yr1').Value:=edit2.Text;
5q2d.{
dJ7~$a(qh3Z|Zn0 open;
dN7D6u$E+b%?(z0 end;
中国论文网i/j2r&{9mry0F$Hhk 根据查询结果计算逐日流量月总数,再乘日秒数计算月水量。
]'DntV0 3计算结果输出
中国论文网 k.{6o"Y"]+W*EGx 经过计算的结果输出Excel表中,Excel表采用模板形式。在程序中与Excel连接采用VCL的方法。首先在程序中加入 TexcelApplication、TexcelWordbook和TexcelWorksheet对象,分别命名为EA、EW、ES。由于使用以上3 个控件,所以需要加入ExcelXP、OleServer单元。连接模板文件采用如下语句:
~5}N)U#c)X0 TryEA.Connect;
中国论文网|g$om*`;Y:Ea EA.Workbooks.Open(模板文件名,null,null,null,null,
#k%n#q#US#K/Bu9qn0 null,null,null,null,null,null,null,null,null,null,1);
8}N EY%mg:|a0 EW.ConnectTo(EA.Workbooks[1] as _workbook);
AJ3bo2M+j
YF0 ES.ConnectTo(EW.Worksheets[1] as _worksheet);
中国论文网:}.|I
B9K3SY\p except
中国论文网p x
qhD~#}Len begin
中国论文网^iYCa EA.Disconnect; //出现问题时关闭
cL4j'O Q0 EA.Quit;showmessage(′请选用 Excel 电子表格′);
中国论文网6m}-?:U4fx#G end;
(\+u/Cw8i
j3V'xtj0 end;
[jO\AT0 程序中模板与辽宁省2007年以前使用的水量计算成果模板相同,计算结果填表,单元格的调用使用如下语句:
8H;]dUBd'|9{0 EA.Cells.Item[I,j]:=结果
中国论文网4H:c3c @[,Qm0S(QJ%{ 成果填表完成后,需要对成果文件保存,成果文件保存采用如下语句:
Y%]/pp(h }0 ES.SaveAs(保存的文件名)