主题:  Magicsoft插件应用开发交流.

滨滨

职务:版主
等级:4
金币:13.0
发贴:1931
注册:2000/11/4 21:26:33
#12004/6/19 21:35:02
配合免费发放的Magic系列插件,本贴给大家提供插件使用方面的交流,没有得到注册码的朋友赶快行动,活动一直到7月1日才结束,机会多多!
大家可以在www.xtra-ucd.com下载相应插件,所有插件均是全功能的可直接使用,需要注册的产品只需要增加一个注册调用即可,还有更多完全费用的插件.



滨滨

职务:版主
等级:4
金币:13.0
发贴:1931
注册:2000/11/4 21:26:33
#22004/6/19 21:40:28
欢迎大家踊跃投稿!
截止到9月1日,投稿最多的前三位可获得www.xtra-ucd.com老顾客园地的产品通用注册码.
老顾客园地是Magicsoft提供给老用户的产品区,只要购买了任一产品,就可以获得通用注册码,这个注册码可以注册该区的所有产品,而且还有不断的新产品加入到该区中,真正做到购买一次,获得更多!



lazycat618

职务:普通成员
等级:1
金币:0.0
发贴:20
注册:2004/4/22 15:24:34
#32004/6/19 23:23:11
支持,我在刚在版主的家里下了个UCD的源代码,正在研究中……
到时还烦版主指点下迷津!



hw26

职务:普通成员
等级:1
金币:11.0
发贴:240
注册:2002/8/8 14:13:16
#42004/6/20 0:10:38
呵呵,好极了
等考试玩了,全面研究MagicSoft插件,学无止境……!



D计划-混沌

职务:管理员
等级:6
金币:15.2
发贴:3528
注册:2007/4/9 9:48:37
#52004/6/20 15:19:59
demo版XtinyAdoDB sql 连接测试:

图片如下:

十分好用,继续研究中
哈哈,最热心用户非我莫属了,向一套产品进军



滨滨

职务:版主
等级:4
金币:13.0
发贴:1931
注册:2000/11/4 21:26:33
#62004/6/20 21:58:03
我自己的例子先放上来.
XDllWrapper与alToolTip.u32配合,在Director中生成Cool Tool Tips的例子,基本上是对照着altooltip的范例转换的,可以在director中完成100%的功能,而且居然不用注册就可以用(al系列的作者对u32和authorware情有独钟,绝不去想xtra和director,呵呵,所以在注册控制上只针对authorware)
XDllWrapper范例下载

界面截屏:



编辑历史:[此帖最近一次被 滨滨 编辑过(编辑时间:2004-06-21 00:31:40)]


D计划-混沌

职务:管理员
等级:6
金币:15.2
发贴:3528
注册:2007/4/9 9:48:37
#72004/6/22 13:19:35
由于时间的关系,我在这里现写一下如何用XtinyAdoDB实现sql数据查询的一个例子,客套的开场白就不说了,我将在例子实现分页显示一个数据表,并对指定字段进行搜索和定位。(软件director)

我在本机的sql环境中配置了一个叫mzhis的数据库(数据库是一个医院的综合管理)
先使用XtinyAdoDB下载包中的StringBuilder.exe产生数据连接字符串

图片如下:

点击build,再出现的窗口中叙选择for sql sever

图片如下:

按照实际情况进行的配置

图片如下:

copy产生的数据串

图片如下:

准备工作就算完成了 :)

打开director新建一个文件
ctrl+0打开script面版,首先,我们在startmovie中产生插件的对象实例,并且实现数据连接,执行查询语句,返回结果集,代码如下
global adodb,res
--定义全局变量adodb,res
--adodb 插件的对象
--res 查询的结果集id
on startMovie
set adodb=xtra ("xtinyadodb").new()
--用new()产生插件的对象
set dataconnect="Provider=SQLOLEDB.1;Password=12345678;Persist Security Info=True;User ID=sa;Initial Catalog=MZHIS;Data Source=5DM-ZQ"
设定dateconnect为刚才产生数据连接串
if adodb.Xa_Connect(dataconnect)=0 then
--连接数据,如果失败跳转的标签"Error"(成功的值为1)
set the text of member "Error" to "Can't connect to the server"
go to "Error"
exit
end if
res = adodb.Xa_Query("exec PTH_GetDrugOrChargeInfo 1")
--执行数据库中定义好的存储过程 PTH_GetDrugOrChargeInfo,返回结果集,使用全局变量res记录结果集id
end startMovie

查看插件帮助可知道得到结果集后可以通过Xa_FetchFieldList语句从结果集中取出字段名列表,然后通过一系列相关语句实现指针的移动,并通过Xa_FetchRowList语句从结果集中取出当前记录列表。通过Xa_RowCount语句可以返回结果集中的记录总数,那么通过repeat语句从1到记录总数重复执行Xa_FetchRowList可以全部的记录。进一步,就可以通过定义记录总数,每页行数,总页数,当前页数,来进行分页浏览。
定义4个全局变量
global zlinecount,page,pages,rows
--zlinecount 每页行数
--pages 总页数
--page 当前页数
--rows 记录总数
通过下列语句获得变量的值
rows = adodb.Xa_RowCount(res)
--得到总的记录数
set page=1
--当前页为第一页
set zlinecount=20
--每页20行
surplus=rows mod zlinecount
--总记录数除以每页行数的余数
if surplus=0 then
--得到总的页数
pages=rows /zlinecount
else
pages=rows /zlinecount+1
end if

----to be continued

编辑历史:[此帖最近一次被 54zq 编辑过(编辑时间:2004-06-22 13:48:23)]


D计划-混沌

职务:管理员
等级:6
金币:15.2
发贴:3528
注册:2007/4/9 9:48:37
#82004/6/22 14:26:49
根据需求,数据库操作的经验我们要达到下图这样一个结果

图片如下:

现在来制定一个函数实现中间的数据表(director中支持简单的html语句,并且是所有文本结构中执行效率最快的)
制订函数updatedb带有两个参数佛fromres和zcount
on updatedb fromres,zcount
FieldList = adodb.Xa_FetchFieldList(fromres)
--得到字段名列表
fields = adodb.Xa_FieldCount(fromres)
--得到字段名列表的字段数
set content="<html><body bgcolor=#ffffff><table border=1><tr height=30 bgcolor=#ff9900 >"
--设定变量content为html的一些固定内容
repeat with i = 1 to fields
--循环单元格得到一行表格为数据库的表头
set content= content&"<td><font size=5 color=#ffffff><b>"&FieldList[i]&"</b></font></td>"
end repeat
set content= content&"</tr>"
repeat with k = 1 to zcount
--循环得到当前指针及其后共 zcount条记录
row=adodb.Xa_FetchRowList(fromres)
--得到当前记录的列表
set content= content&"<tr height=20 bgcolor=#eeeeee>"
repeat with i = 1 to fields
--循环单元格得到一行表格为数据库的当前记录行
set content= content&"<td width="&tablewidth[i]&">"&row[i]&"</td>"
end repeat
set content= content&"</tr>"
adodb.Xa_Next(fromres)
移动到下一条记录
end repeat
set content= content&"</table><body><html>"
return content
返回content
end
与上面语句结合,得到一页表格只需要写
member("dbdable").html=updatedb(res,zlinecount)就可以了
到此实现了第一页,再加上上页下页,最前,最后进行分页就可以实现一个简单的查询了

下面语句通过当前页page变量的加减和adodb.Xa_Goto语句实现了上页下页,最前,最后功能
上页语句
if page>1 then
page=page-1
adodb.Xa_Goto(res,zlinecount*(page-1)+1)
member("dbtable").html=updatedb(res,zlinecount)
end if
下页语句
if page<pages then
page=page+1
adodb.Xa_Goto(res,zlinecount*(page-1)+1)
member("dbtable").html=updatedb(res,zlinecount,)
end if
最前语句
if page>1 then
page=1
adodb.Xa_Goto(res,zlinecount*(page-1)+1)
member("dbtable").html=updatedb(res,zlinecount)
end if
最后语句
if page<>pages then
page=pages
adodb.Xa_Goto(res,zlinecount*(page-1)+1)
member("dbtable").html=updatedb(res,zlinecount)
end if

编辑历史:[此帖最近一次被 54zq 编辑过(编辑时间:2004-06-22 14:58:21)]


D计划-混沌

职务:管理员
等级:6
金币:15.2
发贴:3528
注册:2007/4/9 9:48:37
#92004/6/22 15:44:36
在实际的应用中,数据库往往g计算的,这样就必须进行搜索或定位来节省效率,要不一页一页的翻太浪费时间了,定位往往是通过一些字母或数字的排序来实现
假设库文件是按字母拼音来排序的,比如,数据库中有一字段拼音码,我们要直接跳转到开始字母为p部分,代码如下
locate=adodb.Xa_Locate(res,"PINYINMA",“p", 1, 1)
--得到定位
locateid=adodb.Xa_RecNo(res)
--获得定位id
if locate=1 then
--如果可以找到字母p则
if locateid mod zlinecount = 0 then
--得到当前页
page=locateid/zlinecount
else
page=locateid/zlinecount+1
end if
member("dbtable").html=updatedb(res,zlinecount)
--重新得到表格
在另一些情况数据还有很多的作用,比如对相关的数据进行比较等,这往往就要用的搜索,创建所需存储过程或sql语句,重新得到结果集和其他变量,并使得程序具有广泛的适用和容错,就需要程序更加结构合理,对象化了
简单例子如下

相关文件:点这儿打开



滨滨

职务:版主
等级:4
金币:13.0
发贴:1931
注册:2000/11/4 21:26:33
#102004/6/22 16:29:10
辛苦了!



阿璇

职务:普通成员
等级:1
金币:9.0
发贴:131
注册:2004/6/21 12:18:26
#112004/6/23 16:45:02
好,收下,拿回去研究.



消遣

职务:普通成员
等级:1
金币:5.0
发贴:187
注册:2004/6/15 9:23:04
#122004/8/1 15:49:12
前几天,得到滨滨惠赠的XMySQL注册密码,同时也听到有朋友抱怨帮助文件是英文的不便阅读使用,所以想把帮助文件汉化一下,供大家参考,不知道需不需要。



滨滨

职务:版主
等级:4
金币:13.0
发贴:1931
注册:2000/11/4 21:26:33
#132004/8/1 16:02:39
qyg在上个帖子中说
引用:
前几天,得到滨滨惠赠的XMySQL注册密码,同时也听到有朋友抱怨帮助文件是英文的不便阅读使用,所以想把帮助文件汉化一下,供大家参考,不知道需不需要。


非常需要,非常感谢!



消遣

职务:普通成员
等级:1
金币:5.0
发贴:187
注册:2004/6/15 9:23:04
#142004/8/6 14:22:04
好的,我已经翻译好了,还改了几个无关紧要的小错误。不知道翻译的好不好。请大家多提宝贵意见
相关文件:点这儿打开



hljshzjzez

职务:普通成员
等级:1
金币:0.0
发贴:71
注册:2004/1/27 9:48:13
#152004/8/7 19:45:23
太及时了,谢谢qyg!