首 页 开发联盟 开发培训 下载中心 相关教程 点击排行 留言 开发手册
 
用户名:     密 码:     验证码:   
 
宏达软件开发网> 文章中心 >系统资料
宏达软件开发网 > 文章中心 > 系统资料
  • 3564
  • 3513

利用脚本实现给某个字段赋值

所属类别名称:系统资料     发布日期:2011/5/6 11:23:00

实现功能:通过功能按钮,实现主表中某个字段赋值。

实     例:将主表的‘打印’字段赋值“√”




脚本语句:
begin
DataMdl_Tabledoc.First
while not DataMdl_Tabledoc.eof do
begin
if not ((DataMdl_Tabledoc.state=dsedit) or (DataMdl_Tabledoc.state=dsinsert)) then DataMdl_Tabledoc.edit;
DataMdl_Tabledoc.Fieldbyname(’打印’).asstring:=’√’;
DataMdl_Tabledoc.post;
DataMdl_Tabledoc.next;
end;
end.

注释1:定位语句 

第一条:DataMdl_Tabledoc.First 

下一条:  DataMdl_Tabledoc.next 

最后一条:DataMdl_Tabledoc.eof

注释2:如果记录不是最后一条 执行下面的语句

while not DataMdl_Tabledoc.eof do
begin

执行语句

DataMdl_Tabledoc.next;
end;

注释3:如果主表不是编译或者插入状态,把主表置为编译状态。

if not ((DataMdl_Tabledoc.state=dsedit) or DataMdl_Tabledoc.state=dsinsert)then   DataMdl_Tabledoc.edit;

 

注释4:主表保存  

DataMdl_Tabledoc.post;

注释5:赋值   

DataMdl_Tabledoc.Fieldbyname(’打印’).asstring:=’√’;

  • 3797
  • 3578

开发设计中应该注意的一些问题

所属类别名称:系统资料     发布日期:2011/3/31 10:01:00

1.有记录重复出现的字段应该采用下拉框加记忆功能的方式实现;
2.设计录入/参数窗口时标题应该与上边框保持一定距离;
3.在查询语句中不要使用类似where条件为 is null的语句;
4.库存更新:在主表删除后也应该进行库存更新;
5.在一个系统中不要出现2种命名方式,例如一个叫编号,另外一个叫编码或者电话/联系电话等。
  • 3656
  • 3876

关于win2003服务器远程断开后自动注销的问题解决办法

所属类别名称:系统资料     发布日期:2011/1/30 15:57:00

问题:关闭远程服务器后一段时间,服务器自动注销。如何避免服务器自动注销?

解决办法:开始-->运行-->gpedit.msc 计算机配置->管理模板->Windows组件->终端服务->会话把"为断开的会话设置时间限制"改为"未被配置"。如果通过上面的操作,还是出现程序自动退出,再进行以下操作:开始-->运行-->tscc.msc 连接-->RDP-Tcp右键属性-->会话把这里面的替代用户设置的设置都改为“从不”,并且把“从不”勾选。 需要说明的是:前述工作做完后,远程服务器还是问题依旧,接下来:取消开机按ctl+alt+del,这一点大家都会吧。开始-->所有程序--> 管理工具-->本地安全策略-->本地策略-->安全选项:microsoft网络服务器:当登录时间用完后自动注销用户,改为“已禁用”。microsoft网络服务器:在挂起会话之前所需的空闲时间,改为99999,实际上是禁止了此策略。最后,到服务器用administrator登录一次。

最关键的一步当您退出远程服务器的过程中,不要直接点击远程桌面程序的那个“×”,也不能单击‘注销’。而是在远程服务器的桌面上,单击“开始--关机--断开”,这一点十分重要。

  • 4151
  • 4979

提高网络版三层客户端访问服务器端查询节点的速度问题

所属类别名称:系统资料     发布日期:2011/1/8 14:36:00

互联网三层客户端在访问查询节点的时候如出现以下提示:

 
这是由于该查询节点是根据单位名称相同的条件查询出两个表中的内容,而SQL语句没有优化的原因造成的!
通常我们根据某种条件读取相关两表的语句如下:
 
此语句也可以查询出两表中的内容,但是查询出来的结果速度较慢,因此对该语句进行了优化,该语句优化后见下图:
语句优化后,客户端访问服务器端的速度大大提高!
  • 4049
  • 3915

联合Rich文本的使用

所属类别名称:系统资料     发布日期:2010/12/17 15:20:00

节点有主表和从表,细节区显示从表数据,最后一页的页尾需要显示一大篇幅的字和主表数据。

放在汇总区,用联合Rich文本,换行用 #13#10

如果要显示主表数据用格式:  {[(主表).字段名称]}

  • 4436
  • 3980

利用脚本实现自动更新数据

所属类别名称:系统资料     发布日期:2010/7/14 18:27:00

   软件有时存在这种情况,这里有三个字段“上次结余 本次充装  本次结余”。如图

我想修改同一个编号的中间某条记录中的数据,单击保存后自动修改下面的数据。通过脚本就可以实现这个功能,脚本如下:

第一:保存后:

 

脚本如下:

<script>
  var
   m:double;
   n:double;
   i:integer;  // 定义变量 m、 n、 i
  begin
    m:=DataMdl_Tabledoc.fieldbyname('上次结余数量m3').value;   //将当前记录上次结余数量赋值给变量M

    n:=DataMdl_Tabledoc.fieldbyname('上次结余金额(元)').value;    //将当前记录上次结余数量赋值给变量n

DataMdl_ADOQueryTemp.Sql_text:= 'select * from 充装信息 where ID > ' +  DataMdl_Tabledoc.fieldbyname('ID').asstring + ' AND  编号='''+ DataMdl_Tabledoc.fieldbyname('编号').asstring +''''+'order by  ID';
    DataMdl_ADOQueryTemp.open;
    while not DataMdl_ADOQueryTemp.eof  do
     begin
      DataMdl_ADOQueryTemp.edit;
      DataMdl_ADOQueryTemp.fieldbyname('上次结余数量m3').value := m;
      DataMdl_ADOQueryTemp.fieldbyname('上次结余金额(元)').value := n;
      DataMdl_ADOQueryTemp.fieldbyname('本次结存数量m3').value:=  DataMdl_ADOQueryTemp.fieldbyname('上次结余数量m3').value - DataMdl_ADOQueryTemp.fieldbyname('本次充装数量m3').value;
      DataMdl_ADOQueryTemp.fieldbyname('本次结存金额(元)').value:=  DataMdl_ADOQueryTemp.fieldbyname('上次结余金额(元)').value - DataMdl_ADOQueryTemp.fieldbyname('本次充装金额(元)').value;
      DataMdl_ADOQueryTemp.post;
      m:=DataMdl_ADOQueryTemp.fieldbyname('本次结存数量m3').value;
      n:=DataMdl_ADOQueryTemp.fieldbyname('本次结存金额(元)').value;
      DataMdl_ADOQueryTemp.next ;
     end;
     DataMdl_ADOQueryTemp.close;

 

DataMdl_ADOQueryTemp.Sql_text:='SELECT * FROM  充装信息';
DataMdl_ADOQueryTemp.OPEN;
DataMdl_ADOQueryTemp.CLOSE;


  END.


</script>

  • 3757
  • 3673

利用按扭脚本实现“删除录入密码”

所属类别名称:系统资料     发布日期:2010/6/2 18:08:00

当确定删除一条记录时需要知道管理员的密码,如果录入正确则才可删除,如果录入不正确则提示无权删除。

具体实现:打开设计录入窗口创建按扭,然后点击右侧脚本内容打开如图

脚本内容:

var
s:string;
oform:Tform;
oLabel:TLabel;
oEdit:TEdit;
oButton:TButton;
begin
if Application.messagebox('确定删除当前记录吗?','记录删除提示',1)=1 then
begin
DataMdl_ADOQueryTemp.CLOSE;
DataMdl_ADOQueryTemp.Sql_text:='SELECT 密码 FROM  操作人员管理';
DataMdl_ADOQueryTemp.OPEN;

oform:=TForm.create(nil);
oform.BorderStyle:=bsDialog;
oform.Position:=poMainFormCenter;
oform.width:=200;
oform.height:=100;
oLabel:=TLabel.Create(oform);
oLabel.Parent:=oform;
oLabel.Left:=10;
oLabel.Top:=10;
oLabel.Caption:='请输入删除口令';
oEdit:=TEdit.Create(oform);
oEdit.Parent:=oform;
oEdit.Left:=10;
oEdit.Top:=40;
oEdit.PasswordChar:='*';
oform.ShowModal;
s:=oEdit.Text;
oform.Free;
if s=DataMdl_ADOQueryTemp.fields[0].asstring then
begin
DataMdl_Tabledoc.delete;
end
else
begin
 Application.messagebox('您没有删除当前记录的权限','记录删除提示',0)
end;
DataMdl_ADOQueryTemp.CLOSE;
end;
end.

脚本解析:

var
s:string;
oform:Tform;
oLabel:TLabel;
oEdit:TEdit;
oButton:TButton;

//以上都是上定义变量

begin
if Application.messagebox('确定删除当前记录吗?','记录删除提示',1)=1 then //弹出确定删除当前记录的对话框

begin
DataMdl_ADOQueryTemp.CLOSE;//执行关闭

DataMdl_ADOQueryTemp.Sql_text:='SELECT 密码 FROM  操作人员管理';//执行SQL获得密码

DataMdl_ADOQueryTemp.OPEN; //执行打开

oform:=TForm.create(nil);
oform.BorderStyle:=bsDialog;
oform.Position:=poMainFormCenter;
oform.width:=200;
oform.height:=100;
oLabel:=TLabel.Create(oform);
oLabel.Parent:=oform;
oLabel.Left:=10;
oLabel.Top:=10;
oLabel.Caption:='请输入删除口令';
oEdit:=TEdit.Create(oform);
oEdit.Parent:=oform;
oEdit.Left:=10;
oEdit.Top:=40;
oEdit.PasswordChar:='*';
oform.ShowModal;
//以上是定义录入密码的窗口及录入密码用*

s:=oEdit.Text;
oform.Free;
if s=DataMdl_ADOQueryTemp.fields[0].asstring then
begin
DataMdl_Tabledoc.delete;
//如要录入正确则删除

else
begin
 Application.messagebox('您没有删除当前记录的权限','记录删除提示',0)//否则弹出对话框图无权删除。
end;
DataMdl_ADOQueryTemp.CLOSE;
end;
end.

 

 


 


 

  • 3794
  • 3850

利用按扭脚本实现“重置”

所属类别名称:系统资料     发布日期:2010/6/2 17:58:00

对于已经录入的车主名称,手机号码点重置按扭后可以清空。

具体实现:打开设计录入窗口创建按扭,然后点击右侧脚本内容打开如图

脚本内容:

begin
DataMdl_Tabledoc.cancel;
end.

脚本解析:

begin
DataMdl_Tabledoc.cancel;//对主表当前录入的内容取消
end.

  • 3965
  • 4227

利用按扭脚本实现“提交成功”

所属类别名称:系统资料     发布日期:2010/6/2 17:52:00

点击提交按钮弹出对话框提交成功。

具体实现:打开设计录入窗口创建按扭,然后点击右侧脚本内容打开如图

脚本内容:

begin
if (DataMdl_Tabledoc.state=dsedit) or (DataMdl_Tabledoc.state=dsInsert) then
begin
  DataMdl_Tabledoc.post;
end;
Application.messagebox('提交成功','信息提交',0)
end.

脚本解析:

bdgin //执行代码开始

if (DataMdl_Tabledoc.state=dsedit) or (DataMdl_Tabledoc.state=dsInsert) then
//如果主表是编辑或插入状态

begin
  DataMdl_Tabledoc.post;
end;
//执行主表保存结束

Application.messagebox('提交成功','信息提交',0)//弹出提交成功对话框

end.

  • 3901
  • 3999

利用脚本功能实现只能打印一次报表

所属类别名称:系统资料     发布日期:2010/6/2 10:43:00

打开报表设置窗口,如下图

首先编写打印后执行的语句,单击打印后执行脚本按钮,编写语句如下图

然后编写打印前执行的语句,单击打印前执行脚本按钮,编写语句如下图

注:在编写语句前要在内部表增加一个字段,类型不限制,这个字段起标识作用,如上图的“打印”字段。

脚本解析:

1、打印后脚本:

begin
if DataMdl_Tabledoc.Fieldbyname('打印').asstring='S' then

exit;//如果主表的打印字段其值为S,那么就退出操作。

if not ((DataMdl_Tabledoc.state=dsedit) or (DataMdl_Tabledoc.state=dsinsert)) then DataMdl_Tabledoc.edit;//如果主表不是编译或者插入状态,把主表置为编译状态。

DataMdl_Tabledoc.Fieldbyname('打印').asstring:='S';//如果主表是编译状态,调用主表打印字段,赋其值为S,这里可以赋任意的字符值。
DataMdl_Tabledoc.post;//保存主表
end.

2、打印前脚本:

begin
if DataMdl_Tabledoc.Fieldbyname('打印').asstring ='S' then
begin

//如果打印字段已经赋值为S,将系统变量SYSTEMINFO_CANPRINT标识为FALSE

SYSTEMINFO_CANPRINT:=FALSE;

Application.messagebox('当前信息已经打印过,不能再打印','打印合法检查',0);

//如果系统变量SYSTEMINFO_CANPRINT值为FALSE,弹出对话框提示不能打印的信息。
exit;
end
else
SYSTEMINFO_CANPRINT:=TRUE;//将系统变量SYSTEMINFO_CANPRINT赋值为TRUE

end.  

  • 4957
  • 3822

互联网三层--SQL计算与验证部分问题

所属类别名称:系统资料     发布日期:2010/6/2 9:16:00

互联网三层客户端在增加记录的时候如出现以下提示:

这个时候就要检查SQL计算与验证,出现上图提示时,名称为“本次积分”的计算执行点是“记录保存后”,改成“记录保存前”以后,就不再提示错误。

所以:慎用“记录保存后”,可以适当运用“记录保存前”。因为多次使用“记录保存”后容易产生冲突,系统后台无法分辨先执行哪个“记录保存后”。

  • 4399
  • 3969

如何取消“记录分组的查询设置”

所属类别名称:系统资料     发布日期:2010/3/16 10:02:00

 去掉表格界面的分组设置,点击 “显示分组设置”前的复选框,下面分组字段显示相应的字段,点击“移去”,把分组字段全部移除,点击"保存". 然后点击关闭按钮即可。
  • 4275
  • 4099

验证的那四个提示方式如何选择,语句的区别

所属类别名称:系统资料     发布日期:2010/3/12 13:48:00

数据验证是指的:根据所设置SQL语句的执行结果及所选验证方式;阻止或允许某些操作(触发执行点)的执行并向用户返回提示信息。

    常用于以下方面:

    1,将某些字段设置为必读字段,如果字段为空,则提示用户输入;

          2,防止关键字段重复,如已有重复字段,则提示用户信息重复;

          3,禁止已经存在的符合某种条件的记录再进行修改;

    验证方式说明:

          1,记录存在时提示:所设置SQL语句返回的记录数大于0

          2,记录为空时提示:所设置SQL语句返回的记录数等于0

    3,返回的第一条记录的第一个字段值为非0

    4,返回的第一条记录的第一个字段值为0

    验证一般将触发执行点放在“记录保存前”和“记录删除前”,这样可以起到提示加禁止的作用。如果放到记录保存后或删除后。那么只能起到提示作用,保存和删除记录的动作已经被执行了。

  • 3832
  • 3979

报表中的几个区,具体如何使用呢?

所属类别名称:系统资料     发布日期:2010/3/12 13:47:00

标题区:用于存放报表标题,仅会显示在报表第一页

表头区:用于打印相应表格(由“报表设置”中的“数据源”决定)的当前所有字段名称

细节区:用于打印相应表格(由“报表设置”中的“数据源”决定)的当前所有记录

汇总区:汇总细节区中的数字字段,如果已有细节区,那么勾选汇总区后,系统会自动生成相应字段的汇总表达式,可以进行手工修改。

页头区:用于存放报表最上方(页头)的公共部分,会显示在报表所有页面

页脚区:用于存放报表最下方(页脚)的公共部分,会显示在报表所有页面

  • 3414
  • 4358

关于SQL计算触发执行点的相关解释

所属类别名称:系统资料     发布日期:2010/3/12 13:44:00

记录新增后:记录新增后执行,一般用于生成编号。

         状态描述:此时用户点击了新增(或者加号)按钮,系统新增一条记录,记录尚

     未保存,如果有ID自动编号字段,ID值为真空(null)

     记录保存前:记录保存前执行,一般用于替换当前记录相关字段和验证

         状态描述:此时用户点击了保存(对号)按钮,系统将先执行计算语句,再保存记录,如果有ID自动编号字段,ID值为真空(null)。因为记录尚未保存,因此汇总和库存计算中不会包含此条记录。

     记录保存后:记录保存后执行,一般用于替换当前记录相关字段和汇总、库存等计算

         状态描述:此时用户点击了保存(对号)按钮,系统已将记录保存,然后执行保存后计算。如果有ID自动编号字段,此时已赋值。因为记录已经保存,因此汇总和库存计算中包含此条记录。

     录入窗口光标转移时:当用户在录入窗口变换输入控件时触发执行,一般用于实时计算或者实时验证。

 
     记录删除前:记录删除前执行,一般用于汇总、库存等计算

         状态描述:此时用户点击了删除(减号)按钮,系统提示是否删除,如用户选择是,系统先执行删除前计算,然后再将记录删除。因为记录还没有删除,因此汇总和库存计算中包含此条记录。

     记录删除后:记录删除后执行,一般用于汇总、库存等计算
         状态描述:此时用户点击了删除(减号)按钮,系统提示是否删除,如用户选择是,系统先将记录删除,然后再执行删除后计算。因为记录已经删除,因此汇总和库存计算中不包含此条记录。
综上所述:我们对于汇总和库存一般采用如下方式处理:
          如果节点上是主从表关系(如入库主表和入库从表),那么汇总和库存计算
      可以采用记录保存后和记录删除后进行配对(二者计算语句相同)。
  如果节点上仅有主表(如入库表),那么汇总和库存计算就要采用记录保存 
          后和记录删除前进行配对。因为系统对记录删除后取主表参数支持的不太好,有
          可能取不到。删除前的计算有其特殊情况,不能直接将删除后语句照搬过来。照
          搬过来,就会出现库存不变的情况,因为记录还未被删除,计算时还是会计入库
          存当中。我们可以分析一下,如果这条记录被删除,那么库存将减少这条记录所
          标识的数量,除此以外,不会造成其他影响。因此,我们只需要直接从库存中减
          掉这些数量即可,处理上反而比删除后要简单。

首页 上一页 下一页 尾页 页次:1/3页 共有32条新闻 转到: 

关于我们 | 联系方式 | 合作方式 | 相关条款 | 常见问题
公司地址:山东省聊城市振兴路西路18号楼     邮政编码:252000    客服电话:0635-8386265
版权所有:HONGDA SOFTWARE    宏达软件     鲁ICP备09000001号