新手请教一条语句

richgod 2008-02-25 03:14:43
刚学PB没多久,想试着做一个材料管理的软件
一个窗口WIN_1,放一树控件TV_1及一个数据窗口,
点击树节点即材料名称即可以在数据窗口中显示该材料名称的明细帐,树已建好,对于右侧数据窗口不知道从何处下手,如何制做如下的效果
月日 摘要 收入(借方) 发出(贷方) 结 存
数量 单价 金额 数量 单价 金额 数量 单价 金额
1月1日 上年结转 100 0.8 80
1月7日 自购XX材料 100 0.8 80
1月12日 XX部门领料 50 0.8 40
1月15日 购XX材料 200 0.8 160
本月合计 300 0.8 240 50 0.8 40 350 0.8 280
2月1日 XX部门领料 100 0.8 80
本月合计 100 0.8 80 250 0.8 200
要建几个数据表呢?要建期初库(用户设置)?材料库?
上面那种形式如何设计呢?新手刚学,想做出来,还望指教,多谢了
...全文
148 点赞 收藏 20
写回复
20 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
richgod 2008-02-27
大家都没有做这种流水帐嘛?感觉做个历史表比较好,只是不知道该怎么做?
回复
richgod 2008-02-27
期初数或者上年结转是不是需要单独建一表呢?不知如何处理?望指教,多谢了
回复
AFIC 2008-02-27
个人感觉
月日,摘要,标志位, 数量 单价 金额
建一个表就好了,生成dw用crosstab或存储过程数据源
回复
richgod 2008-02-27
TO xowczkf:能多解释一下嘛?没大看懂
回复
xowcbobo 2008-02-27
這樣應該能達到你要的效果
回复
xowcbobo 2008-02-27
樹的of_insertfromsql函數
//this.DeleteItem(0)
//ib_del = FALSE

INTEGER li_level
LONG ll_row
STRING ls_syntax,ls_err,ls_label,ls_data
TREEVIEWITEM ltv_item,ltv_itemparent
DATASTORE lds_find

ls_syntax = sqlca.syntaxfromsql(as_sql, "style(type=grid) ",ls_err)
lds_find = Create DATASTORE
lds_find.Create(ls_syntax,ls_err)
lds_find.SetTransObject(sqlca)
IF lds_find.Retrieve() > 0 THEN
ib_rollback = TRUE //為真 不改變toolbar狀態
SetRedraw(FALSE)
// this.getitem(al_handle,ltv_itemparent)
// li_level = ltv_itemparent.level
this.getitem(al_handle,ltv_item)
li_level = ltv_item.level
ltv_item.PictureIndex = li_level*2 + 1
ltv_item.SelectedPictureIndex = li_level*2 + 2
ltv_item.Children = FALSE
ltv_item.HasFocus = FALSE
ltv_item.Selected = FALSE
FOR ll_row = 1 TO lds_find.Rowcount()
ls_label = lds_find.getitemstring(ll_row,1)
ls_data = lds_find.getitemstring(ll_row,2)
IF ls_label = ' ' OR Isnull(ls_label) THEN ls_label = '其它 '
ltv_item.label = ls_label
ltv_item.data = ls_data
this.InsertItemLast(al_handle, ltv_item)
NEXT
END IF
DESTROY lds_find
SetRedraw(TRUE)
This.SelectItem(al_handle)
ib_rollback = FALSE

RETURN ll_row
回复
xowcbobo 2008-02-27
在樹的selectionchanged事件里面
TREEVIEWITEM ltv_item
this.GetItem(newhandle,ltv_item)
string ls_yymm,ls_pnl,ls_sql,ls_data,ls_date,ls_label,ls_date_card

CHOOSE CASE ltv_item.level
CASE 1
ls_date = string(ltv_item.data)
dw_2.Retrieve(gs_fact, '% ',ls_date+ '% ')
IF ltv_item.Children = FALSE THEN
ls_sql = "SELECT DISTINCT DATE_CARD,DATE_CARD FROM CK_CARDDATA WHERE FACT_NO = ' " + gs_fact +&
" ' AND DATE_CARD LIKE ' " + ls_date + "% ' ORDER BY 1 "
of_InsertFromSql(ls_sql,newhandle)
END IF

CASE 2
// this.GetItem(this.FindItem(ParentTreeItem!,newhandle),ltv_item)
ls_date = string(ltv_item.data)
dw_2.Retrieve(gs_fact, '% ',ls_date+ '% ')
// this.GetItem(this.FindItem(CurrentTreeItem!,newhandle),ltv_item)
IF ltv_item.Children = FALSE THEN
ls_sql = "SELECT DISTINCT PNL ¦ ¦ '. ' ¦ ¦PNL_NM,PNL FROM PE_PERSON WHERE FACT_NO = ' " + gs_fact + &
" ' AND PNL IN (SELECT PNL FROM CK_CARDDATA WHERE FACT_NO = ' " + gs_fact + &
" ' AND DATE_CARD like ' " + ls_date + "% ' )ORDER BY 1 "
of_InsertFromSql(ls_sql,newhandle)
END IF

case 3
ls_pnl = string(ltv_item.data)
this.GetItem(this.FindItem(ParentTreeItem!,newhandle),ltv_item)
ls_data = string(ltv_item.data)
dw_2.Retrieve(gs_fact,ls_pnl,ls_data)

END CHOOSE
回复
richgod 2008-02-26
水晶报表能完成这个功能嘛?
回复
richgod 2008-02-26
从网上看个反编译的中文报表服务组件那个是做什么的,可以用于做三栏式的明细帐嘛?
回复
richgod 2008-02-26
可以给点提示嘛?不知道如何下手
回复
qiyousyc 2008-02-26
当然是自由格式的数据窗口了。
具体做法跟你的表结构有关了。
回复
richgod 2008-02-26
月日 摘要 收入(借方) 发出(贷方) 结 存
数量 单价 金额 数量 单价 金额 数量 单价 金额
1月1日 上年结转 100 0.8 80
1月7日 自购XX材料 100 0.8 80
1月12日 XX部门领料 50 0.8 40
1月15日 购XX材料 200 0.8 160
本月合计 300 0.8 240 50 0.8 40 350 0.8 280
2月1日 XX部门领料 100 0.8 80
本月合计
100 0.8 80 250 0.8 200

做成这个样式就行了,
回复
AFIC 2008-02-26
详细解释下你的三栏式的明细帐是啥
回复
ckc 2008-02-26
似乎2张表就可以了,一个材料表,一个变化历史表
余额用历史表累加出来,也可以直接记录在历史表中
回复
洛阳老马 2008-02-26
表里面直接建立这些收入、发出、结存的字段是最简单的,数据要在业务发生时更新
回复
lzheng2001 2008-02-26
我以前的有几个项目用vb6+水晶报表, 我可以说水晶报表做到的dw也可以做到, dw能做到的水晶报表未必能做到.
当然界面上,两者会有差别.
回复
guijunxu 2008-02-26
PB就可以完成该功能,数据窗口我觉得一个就可以实现.三联效果可以用自由格式的数据窗口进行编辑即可.
右侧数据窗口的数据可以通过点击左侧树状得到一个唯一值进行过滤.
回复
lzheng2001 2008-02-25
n up 风格的数据窗口 或者 组合式的数据窗口 具体看你的表的情况
回复
richgod 2008-02-25
怎么才能做成三栏式明细帐的效果
回复
dawugui 2008-02-25
这可一句两句说不清楚.

基本原则是,点击左边的东西,得到一个类似编号的代码,然后利用这个编号去数据库查询相关数据并统计生成右边的表.
回复
相关推荐
基于java的企业人事管理系统设计--软件工程课程设计(含源码与论文设计).rar 1 引言 4 1.1 课程设计目标 4 1.2 编程工具(编程环境)介绍 4 1.3 实施时间及主要实施步骤 4 2 需求分析 5 3 系统总体设计 6 4 数据库设计 6 5 主要功能模块的设计与实现 10 5.1 功能模块1详细设计(综合查询员工信息)..........................................................10 5.1.1 详细设计.......................................................................................................10 5.1.2 算法流程........................................................................................................15 5.1.3 界面设计及测试结果.....................................................................................15 6 调试分析 15 7 用户手册 16 8 测试结果 17 8.1 员工信息的添加...................................................................................................17 8.2 员工信息的修改...................................................................................................17 8.3 员工信息的删除...................................................................................................18 8.4 员工信息的综合查询...........................................................................................18 8.5 员工信息按性别统计的结果................................................................................19 8.6 员工信息按状态统计的结果...............................................................................19 8.7 员工信息按职称统计的结果................................................................................20 9 结论 20 10 参考文献 20
发帖
PowerBuilder
创建于2007-09-28

868

社区成员

PowerBuilder 相关问题讨论
申请成为版主
帖子事件
创建了帖子
2008-02-25 03:14
社区公告
暂无公告