📄 9934.txt
字号:
var object = "";
var listValue = getListValue(listitem);
document.formCategory.submit(listValue);
}
function getListValue(list)
{
var listValue="";
if (list.selectedIndex != -1)
{
listValue = list.options[list.selectedIndex].value;
}
return (listValue);
}
</SCRIPT>
四、显示结果
最后要做的就是构造查询并显示查询结果了。首先,查询的构造依赖
于用户在下拉列表框中所选择的类别名字,这个查询只需一个简单的SQL
SELECT语句,在WHERE子句中指定用户所选择的类别即可。构造好查询之后
就可以执行它了,如果没有符合要求的记录,则向用户显示一个提示信息;
否则就显示这些记录。下面是完成上述任务的VBSCript代码:
<% If Request.QueryString("qryCategory") = "" Then
Response.Write("请从列表中选择一个类别.")
Else
` 构造查询
Set rs = SERVER.CreateObject("ADODB.Recordset")
` 设置SQL语句
strSQL = "SELECT Documents.File_Name, Documents.Comments, Documents.Date_Submitted "
strSQL = strSQL & "FROM Documents "
strSQL = strSQL & "WHERE ((Documents.Category_Name) = `" & Request.QueryString("qryCategory") & "`)"
` 打开Recordset对象
rs.Open strSQL,conn,adOpenStatic
If rs.RecordCount = 0 Then
Response.Write("没有发现指定类别的记录" & Request.QueryString("qryCategory"))
Else
Response.Write("< H3>给定类别含以下记录: " & Request.QueryString("qryCategory") & "< /H3>")
` 在表格中显示查询结果
Response.Write("< TABLE CELLSPACING=2 CELLPADDING=0 COLS=3 WIDTH=500 BGCOLOR=#F0F0FF>")
Response.Write("< TR>")
Response.Write("< TD ALIGN=CENTER VALIGN=TOP WIDTH=20% BGCOLOR=#C8C8FF>< B>名称< /B>< /TD>")
Response.Write("< TD ALIGN=CENTER VALIGN=TOP WIDTH=65% BGCOLOR=#C8C8FF>< B>说明< /B>< /TD>")
Response.Write("< TD ALIGN=CENTER VALIGN=TOP WIDTH=15% BGCOLOR=#C8C8FF>< B>日期< /B>< /TD>")
Response.Write("< /TR>")
Do While Not rs.EOF
Response.Write("< TR>")
Response.Write("< TD>" & rs("File_Name") & "< /TD>")
Response.Write("< TD>" & rs("Comments") & "< /TD>")
Response.Write("< TD>" & rs("Date_Submitted") & "< /TD>")
Response.Write("< /TR>")
rs.MoveNext
Loop
rs.Close
Response.Write("< /TABLE>")
End If
End If
Set rs=Nothing
conn.Close
Set conn=Nothing
%>
虽然本例中我们只用到了一个简单的带WHERE子句的SQL SELECT,但
用类似的方法可以构造出复杂的界面和查询,只要相应地增加用来指定条
件的表单元素以及根据用户选择结果构造合适SQL语句的脚本即可。
五、小结
ASP技术为最终用户所要求的不同数据查询界面提供了一个可伸缩的
开发环境。综合地运用脚本与HTML可以为察看和阐释数据构造出灵活的界
面,这些工具为按照用户需求过滤数据提供了一个简单但高效的方法。
****************************************************************
◆下载专区◆
PHP V3.0.11 For Win9x/NT (1680K)
PHP3是一种新型的CGI程序编写语言,易学易用,运行速度快,可以方便快
捷地编写出功能强大,运行速度快,并可同时运行于Windows、Unix、Linux
平台的Web后台程序,内置了对文件上传、密码认证、Cookies 操作、邮件
收发、 动态GIF生成等功能,PHP3直接为很多数据库提供原本的连接,包括
Oracle,Sybase,Postgres,Mysql,Informix,Dbase,Solid, Access
等 ,完全支持ODBC接口,用户更换平台时,无需变换PHP3 代码,可即拿即
用。
下载地址: http://it.263.net/cgi-bin/download/cgi/download?id=703
官方站点: http://www.php.net
PHP 3.09 Source for unix (1620k)
PHP 3.0.10 Source for LINUX (1753K)
PHP 3.09 Source PHP3是一种新型的CGI程序编写语言,易学易用,运行速度
快,可以方便快捷地编写出功能强大,运行速度快,并可同时运行于Windows、
Unix、Linux 平台的Web后台程序,内置了对文件上传、密码认证、Cookies
操作、邮件收发、 动态GIF生成等功能,PHP3直接为很多数据库提供原本的连
接,包括Oracle,Sybase,Postgres,Mysql,Informix,Dbase,Solid,
Access 等 ,完全支持ODBC接口,用户更换平台时,无需变换PHP3 代码,可即
拿即用。Php3 Server 完全免费。这是PHP 3.09的原代码,在UNIX/LINUX下
编译安装。
PHP 3.09 Source for unix
下载地址: http://it.263.net/cgi-bin/download/cgi/download?id=672
PHP 3.0.10 Source for LINUX
下载地址: http://it.263.net/cgi-bin/download/cgi/download?id=702
如果想要更多的编程工具、程序源码和控件的话,请来我的主页看看吧。
http://person.zj.cninfo.net/~yao
****************************************************************
****************************************************************
◆有问必答◆
★本期回答★
●117. 回答请mailto: yaozheng@kali.com.cn?subject=117
我现在正在学习vfp6.0编程。刚好单位有一套原来在foxbase2.1+下面
开发的工资管理系统,现在单位买了一台新电脑,是pwin98平台。我想把工
资系统移到pwin98下,但发现不修改直接运行的话有很多问题,但要修改的
话,而vfp6.0与foxbase2.1+之间又有许多差别,修改复杂度与重新设计有
差不多的工作量。因此决定按照原功能用vfp6.0重新设计一套工资管理系统。
原工资系统通用性比较强,它可以让操作员根据实际情况,自己修改
工资结构,使得每月的工资构成可以根据实际情况而变化。我也发现这一功
能很实用,但我就是不知道在vfp6.0中怎么实现,(表单设计时控件也同时
设计上去了,固定的控件。假如运行表单时添加控件,添加语句又不能放在
循环语句中)。
真心向您请教在vfp6.0中怎样实现工资结构可以经常变化的管理系统功
能,同时怎样在打印机上灵活打印工资结构不同的报表。谢谢!
如回信请发邮件: zgh@2911.net
答:
Foxbase下工资结构能灵活变化主要在于在设计数据表(Table)时,专门定义
了一个数据表结构管理表,表中定义了工资表的字段特性,报表打印表格形
式等,故可灵活运用,在VFP6中同样可以实现,定义同样的结构表,同时在
输入表单采用灵活的GRID控件,利用视图与表的关联生成输入字段等。打印
时,要修改VFP报表生成的打印输出表结构,可以灵活打印! 易文俊
wjy@mail.njust.edu.cn
●123. 回答请mailto: yaozheng@kali.com.cn?subject=123
我在编写一wave文件播放器时遇见一棘手问题:
当文件较大,不能一次读入内存缓冲时,我用了两块内存缓冲区,一块数据
从硬盘读入后即送waveOutWrite()供播放,同时准备下一块数据,当第一块
缓冲区数据播完,第二块数据已准备好,立即交换两块缓冲区角色,如此循
环.但实际发现,再把硬盘数据读入缓冲时,播放的声音发生混乱,一旦读
盘动作结束,声音又恢复正常,不知是读硬盘要抢占cpu时间,还是影响声卡
的处理性能.特此请教,不知那诸多的媒体播放器是如何解决读盘与回放的
矛盾的?Zhou Zhendong zhouzd@126.com
答:
用双线程,设读盘级别比播放级别低一点.
_______________________________________________________________
★本期提问★
130. 回答请mailto: yaozheng@kali.com.cn?subject=130
想问一下,如何编程启动网络软件(如Age of Empire)自动连到一个ip上?
回信:gddansan@163.net
131. 回答请mailto: yaozheng@kali.com.cn?subject=131
在VB里,如何得知当前键盘按键的状态(不是在KeyDown或其他键盘相关事
件中,希望能在任意时刻扫描键盘) jiap@NEU-ALPINE.com
132. 回答请mailto: yaozheng@kali.com.cn?subject=132
如果告诉你一个物体(比如煤堆)的一些代表点(折点处)的世界坐标
(x,y,z),如何得到大概图形以及该物体的体积? delphifan@990.net
133. 回答请mailto: yaozheng@kali.com.cn?subject=133
请问用什么软件能够得到DLL文件中的函数及其参数和返回类型,关键是
参数和返回类型?谢谢。(十万火急!!!) liukai1111@263.net
134. 回答请mailto: yaozheng@kali.com.cn?subject=134
请问在VC++中如何取到真正的随机数,在VC++的MSDN库中只能查到rand()
伪随机数。 maoweijing@21cn.com
135. 回答请mailto: yaozheng@kali.com.cn?subject=135
我现在在用DELPHI4编写一个人事管理程序,在处理个人档案的照片时不
知如何在DELPHI中操作扫描仪,来将照片引入程序中或改变程序中的照
片。斌斌 binbin@ynmail.com
136. 回答请mailto: yaozheng@kali.com.cn?subject=136
对于《编程技术》第33期中第114号问题解答,我认为是答非所问(请包
涵),可能是我的说明不够清楚,现在再作详细说明,希望各位高手不
吝赐教。
完整例子:
class PACKAGE TMyObject : public TComponent
{
private:
AnsiString FFileName;
public:
__fastcall TMyObject( TComponent *aOwner ) : TComponent( aOwner ) {}
__published:
__property AnsiString FileName = { read = FFileName, write = FFileName };
};
另外写一个 TFileNameProperty 的属性编辑器类。
#include <Dsgnintf.hpp>
class PACKAGE TFileNameProperty : public TStringProperty //或TPropertyEditor, ...
{
public:
__fastcall TFileNameProperty( const _di_IFormDesigner aDesigner, int aPropCount );
virtual TPropertyAttributes __fastcall GetAttributes()
{
return TPropertyAttributes() << paDialog; // 编辑该属性时会出现一个"..."的按钮。
}
virtual void __fastcall Edit() //按下按钮时会执行该函数。
{
... //这里的代码比较长,略过。主要是打开一个“TOpenDialog",取得文件的完整路径。
}
... //略过。
};
// 注册 TMyObject 类
namespace Test
{
void __fastcall PACKAGE Register()
{
TComponentClass Classes[ 1 ] = { __classid( TMyObject ) };
RegisterComponents( "Test", Classes, 0 );
// 下面就是问题之处
// 方法一:编译不通过,原因是 __typeinfo 仅支持 VCL 类
RegisterPropertyEditor( __typeinfo( AnsiString ),
__classid( TMyObject ),
"FileName",
__classid( TFileNameProperty ) );
// 方法二:这种情况没有错误,但却没有注册该属性编辑器。
TTypeInfo ti;
ti.Kind = tkString; // 或 tkLString、tkWString、...
ti.Name = "AnsiString"; // 或 String、...
RegisterPropertyEditor( &ti,
__classid( TMyObject ),
"FileName",
__classid( TFileNameProperty ) );
}
}
其实除了 AnsiString 类,其它基本类型 int, char ... 都会有相同问
题。如果用 Delphi就不会有这种问题,我想这就是 CB 不如 Delphi 的
地方之一吧。我目前的解决办法是自己写一个TString类替代AnsiString,
但效果并不理想,原因是 VCL 类一定要用指针的方式使用。对于Delphi我
并不熟,因此希望有仅用CB就可解决问题的好办法。 fslz@cmmail.com
提问信箱: yaozheng@kali.com.cn?subject=question
如果您有什么疑难问题,请发到上面的信箱里,我会及时把您的问题放在
杂志上的,希望编程高手们能不吝赐教,也希望这个栏目能成为大家交流
的场所。
****************************************************************
****************************************************************
◆编者的话◆
本刊已加入【CHINA-EZL】中国电子杂志联盟
联盟主页地址 http://china-ezl.yeah.net
◆欢迎光临我的个人主页
●《编程技术》 http://person.zj.cninfo.net/~yao
本刊的同名主页,主要以收集各类编程工具控件和程序源代码为主。
●《C++ Builder世界》 http://cppbuilder.myrice.com
本人最新制作的个人主页,是一个探讨C++ Builder编程的专题
网站,为广大的C++ Builder爱好者搜集关于C++ Builder的一切。
◆《编程技术》订、退方法:
请到本刊主页进行订退工作 http://person.zj.cninfo.net/~yao
如果您觉得这份刊物还不错的话,欢迎把它介绍给您的朋友.
不知道您看了这期刊物有什么想法或者是意见,欢迎向我提出来.
本人感激不尽,我的联系方法如下:
E-mail:yaozheng@kali.com.cn
ICQ#: 43260473
**************************THE END**************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -