关于动态生成表单(100分奉上)

jinslh 2003-03-03 03:50:29
请问各位高手:
如何在lotus中实现动态的生成表单,就像在关系型数据库的“create table table1...”命令一样的效果,可以通过程序来建表单。
如能给小女子提供帮助,必定高分敬上!!!
...全文
65 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
大海无疆2018 2003-03-13
  • 打赏
  • 举报
回复
zhanghuip@163.com
rugl 2003-03-04
  • 打赏
  • 举报
回复
我手头上刚好有像d2chaofan(垃圾)所说的例子,我给你发吧,你收一下。
jinslh 2003-03-04
  • 打赏
  • 举报
回复
多谢各位了!!
楼上的兄弟(姐妹),可否发给我一个例子,不胜感激了
jinslh@sina.com
d2chaofan 2003-03-03
  • 打赏
  • 举报
回复
CS可以在域里设置多值,每行显示一条记录,可以达到效果
在IBM网站的Sandbox里有找找
我发一个也行
不过我可能没有时间
近来我在跳槽
jhlqab 2003-03-03
  • 打赏
  • 举报
回复
如果你是R5,那时不能做动态表格的
不过你可以把数据倒入Excel里面,然后再把他粘贴到表单中的RTF域中,给你一段试例:
Dim workspace As New NotesUIWorkspace
Dim session As New NotesSession
Dim uidoc As NotesUIDocument
Dim doc As notesdocument
Set uidoc = workspace.CurrentDocument
If uidoc.EditMode=False Then uidoc.EditMode = True
Set doc=uidoc.document
Call uidoc.GotoField( "Body" )
Set obj1=CreateObject( "Excel.application")
'设置表头以及相应的格式
obj1.visible=True
Set excelWorkbook=obj1.Workbooks.Add
Set xlSheet = excelWorkbook.WorkSheets("sheet1")
xlSheet.Cells(1, 5).Value = "保管期限卷号"
xlSheet.Range("E1:G1").Merge(True)
xlSheet.Cells(2, 1).Value = "案卷顺序号"
xlSheet.Cells(2, 2).Value = "案 卷 标 题"
xlSheet.Cells(2, 3).Value = "起止日期"
xlSheet.Cells(2, 4).Value = "卷内张数"
xlSheet.Cells(2, 5).Value = "永久"
xlSheet.Cells(2, 6).Value = "长期"
xlSheet.Cells(2, 7).Value = "定期"
xlSheet.Cells(2, 8).Value = "备注"
xlSheet.Range("A1:A2").MergeCells = True
xlSheet.Range("B1:B2").MergeCells = True
xlSheet.Range("C1:C2").MergeCells = True
xlSheet.Range("D1:D2").MergeCells = True
xlSheet.Range("H1:H2").MergeCells = True
xlSheet.Rows("1:2").RowHeight = 24
xlSheet.Range("A1:H2").Font.Bold= True
xlSheet.Columns(1).Columnwidth =10
xlSheet.Columns(2).Columnwidth = 40
xlSheet.Columns(3).Columnwidth = 10
xlSheet.Columns(4).Columnwidth = 9
xlSheet.Columns(5).Columnwidth = 8
xlSheet.Columns(6).Columnwidth = 8
xlSheet.Columns(7).Columnwidth = 8
xlSheet.Columns(8).Columnwidth = 16
'把取出的信息写入Excel表格
dep=doc.dep(0)
year_time=doc.year(0)
Dim db As NotesDataBase
Dim view As NotesView
Dim collection As NotesDocumentCollection
Dim doccon As NotesDocument
Dim keys(1 To 2) As String
Set db=session.CurrentDatabase
Set view=db.getview("recordfile")
keys(1)=dep
keys(2)=year_time
Set collection=view.GetAllDocumentsByKey(keys)
Dim count As Integer
count=collection.count
Dim p As Integer'永久
Dim l As Integer'长期
Dim t As Integer'短期
p=0
l=0
t=0
For i=3 To count+2
'将所有案卷的信息倒入Excel
Set doccon=collection.GetNthDocument(i-2)
xlSheet.Cells(i, 1).Value = i-2
xlSheet.Cells(i, 2).Value = doccon.title(0)
Dim startandenddate As Variant
startandenddate=Trim$(Str(doccon.start_time(0))+"至"+Str(doccon.end_time(0)))
xlSheet.Cells(i, 3).Value = startandenddate
'卷内张数用户填写xlSheet.Cells(x+2, 4).Value
Select Case(doccon.timelimit(0))
Case "永久"
p=p+1
xlSheet.Cells(i,5).value=p
Case "长期"
l=l+1
xlSheet.Cells(i,6).value=l
Case "短期"
t=t+1
xlSheet.Cells(i,7).value=t
End Select
xlSheet.Cells(i,8).value=doccon.memo(0)
Next
xlSheet.Range("A1:H" & Cstr(i-1)).HorizontalAlignment=3
xlSheet.Range("A1:H" & Cstr(i-1)).VerticalAlignment=2
xlSheet.Range("A1:H" & Cstr(i-1)).Borders.weight = 2
xlSheet.Range("A1:H1").Borders(3).weight = 3
xlSheet.Range("B1:B" & Cstr(i-1)).WrapText = True
xlSheet.Range("C1:C" & Cstr(i-1)).WrapText = True
xlSheet.Range("H1:H" & Cstr(i-1)).WrapText = True
xlSheet.Range("A3:H" & Cstr(i-1)).font.size = 10
xlSheet.Rows("3:" & Cstr(i-1)).RowHeight = 30
xlSheet.PageSetup.LeftHeader = "" & Chr(10) & " 部门:" & dep
xlSheet.PageSetup.CenterHeader = "&""宋体,加粗""&20案 卷 目 录"
xlSheet.PageSetup.RightHeader = "" & Chr(10) & "年代:" & year_time & "年"
xlSheet.PageSetup.PrintTitleRows = "$1:$2"
xlSheet.PageSetup.CenterHorizontally = True
xlSheet.PageSetup.Orientation = 2
Call uidoc.fieldsettext("p",Str(p))
Call uidoc.fieldsettext("l",Str(l))
Call uidoc.fieldsettext("t",Str(t))
xlSheet.UsedRange.Copy
Call uidoc.gotofield("body")
Call uidoc.paste
jca 2003-03-03
  • 打赏
  • 举报
回复
表单是在设计的时候就确定了的,就相当于与用户交互的界面,是不能通过编程来动态创建的。
文档则相当于记录,
daluoboequalto 2003-03-03
  • 打赏
  • 举报
回复
Notes不支持设计模板的自行更改,必须在Designer里面。
选择设计好的不同的表单来显示文档,是一个办法。
在Web下使用代理,print,可以作出任意的网页效果。
但是需要注意的是,在Web上,文档被提交(保存)的时候,Domino会逐个的将html组件和表单中的设计元素“对应”,比方说,网页上有一个<input type=text name=text1>,那表单中也需要有个域和他对应。否则出错。
还有其它一些很古怪的地方,Notes是活到老学到老不懂到老。
walkskyman 2003-03-03
  • 打赏
  • 举报
回复
在c/s下,只能用先建好的不同的表单来显示一个文档。
在b/s下,可以考虑用print来输出,写几段通用的,通过组合可以实现很多的效果,通过拐个弯来实现动态的表单,虽然麻烦了点,不过大部分效果可以实现。
至于后台存储的数据(文档),你随便怎么建都行,不像关系数据库那么严格。
walkskyman 2003-03-03
  • 打赏
  • 举报
回复
通过程序来建表单是不可能的,只可能新建文档,相当于关系数据库的后台纪录。
因为表单牵涉到显示问题,所以lotus没有办法
majar 2003-03-03
  • 打赏
  • 举报
回复
呵呵,这个简单啊!
dim session as New NotesSession
dim db as NotesDataBase
Dim doc as NotesDocument
set db = session.CurrentDataBase
set doc = New NotesDocument(db)
doc.Form = "FormCreateNewDoc" '在这里写入你要显示用的Form的名称
doc.Field1="Field1"
doc.Field2="Field2"
... '这里添加你想添加的Field
Call doc.Save(false,false)
然后用一个Form显示出来就OK

535

社区成员

发帖
与我相关
我的任务
社区描述
企业开发 Exchange Server
社区管理员
  • 消息协作社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧