曾經有乙個問題,一直困擾我很久。由於工作的需要,經常需要把access資料表的內容,製作成powerpoint幻燈片,常常在做大量的單調的重複的簡單勞動。作為乙個程式設計的愛好者,最不願意做的就是這種簡單機械的事情。
那麼,如何根據資料表中資料,生成powerpoint幻燈片呢?
我的具體要求是這樣的:
每個記錄 對應一張幻燈片;
每個欄位的內容,對應乙個文字框;
最好,相同字段對應的文字框,在每張幻燈片中的位置和格式是相同的.
大體過程是這樣的:
第一步:先用powerpoint新建一張幻燈片,新增五個文字框,分別用 於顯示資料表中五個欄位的值;再新增其它有關文字,並設定好各物件的格式及動畫。
第二步:在access資料中,建立以下程式:
sub lpptadd(sth as string, sym as string, slr as string, sxh as string, sda as string, stx as string)
'引數分別是: 題號,頁碼,內容,選項,答案,題型
'使用複製的方法來新增幻燈片
set newslide = activepresentation.slides(1).duplicate
with newslide
.shapes("rectangle 2").textframe.textrange.text = trim(sth) '題號
.shapes("rectangle 3").textframe.textrange.text = trim(slr) '內容
.shapes("rectangle 6").textframe.textrange.text = trim(sym) '頁碼
.shapes("rectangle 7").textframe.textrange.text = trim(sda) '答案
.shapes("text box 8").textframe.textrange.text = trim(stx) '題型
.shapes("rectangle 9").textframe.textrange.text = trim(sxh) '選項
end with
end sub
sub readdb()
dim s as string
dim sdb as string
dim lconn as new adodb.connection
dim rs as new adodb.recordset
sdb = "f:/bq1.mdb"
s = " provider=microsoft.jet.oledb.4.0 "
s = s & " data source= " & trim(sdb)
s = s & " ;persist security info=false"
lconn.open s
s = "select * from 題庫 "
rs.open s, lconn, adopenstatic, adlockreadonly
rs.movelast
dim i as long, n as long
dim s1 as string, s2 as string, s3 as string, s4 as string, s5 as string, s6 as string
n = rs.recordcount
rs.movefirst
i = 1
if n > 0 then
call lpptdel
do while not rs.eof
s1 = trim(str(i))
n = val("" & rs("page"))
s2 = iif(n = 0, "", trim(str(n)))
s3 = trim(rs("kttxt"))
n = val("" & rs("txcode"))
if n = 0 or n = 1 then
s4 = "a:" & trim(rs("xxone")) & chr(13)
s4 = s4 & "b:" & trim(rs("xxtwo")) & chr(13)
s4 = s4 & "c:" & trim(rs("xxthr")) & chr(13)
s4 = s4 & "d:" & trim(rs("xxfou"))
s5 = "(" + iif(rs("isokone") = 1, "a", "")
s5 = s5 & iif(rs("isoktwo") = 1, "b", "")
s5 = s5 & iif(rs("isokthr") = 1, "c", "")
s5 = s5 & iif(rs("isokfou") = 1, "d", "") & ")"
end if
select case n
case 0
s6 = "多選題"
case 1
s6 = "單選題"
case 2
s4 = ""
s5 = "(" + iif(rs("isok") = 1, "√", "×") & ")"
s6 = "判斷題"
case else
s4 = ""
s5 = ""
s6 = ""
end select
call lpptadd(s1, s2, s3, s4, s5, s6)
i = i + 1
rs.movenext
loop
end if
t2 = timer
msgbox ("生成結束! 用時 " & str(t2 - t1))
end sub
sub lpptadd(sth as string, sym as string, slr as string, sxh as string, sda as string, stx as string)
'引數分別是: 題號,頁碼,內容,選項,答案,題型
'使用複製的方法來新增幻燈片
set newslide = activepresentation.slides(1).duplicate
for each s in newslide.shapes
debug.print s.id, s.name, s.textframe.textrange.text
next
with newslide
.shapes("rectangle 2").textframe.textrange.text = trim(sth) '題號
.shapes("rectangle 3").textframe.textrange.text = trim(slr) '內容
.shapes("rectangle 6").textframe.textrange.text = trim(sym) '頁碼
.shapes("rectangle 7").textframe.textrange.text = trim(sda) '答案
.shapes("text box 8").textframe.textrange.text = trim(stx) '題型
.shapes("rectangle 9").textframe.textrange.text = trim(sxh) '選項
end with
end sub
根據Django Model動態生成資料表的方法
當定義好django model後,一般可以在初始化呼叫syncdb方法來自動在資料庫裡面生成相應的表。那麼如果想在後續階段想根據根據django model動態生成資料表,該怎麼辦呢?要生成資料庫表,就得先根據model的定義先生成sql語句,然後在資料庫裡面執行。並且由於要支援不同的資料庫,所生...
提取資料表中資料生成html
1.在做辦公自動化的時候,通常會遇到這樣的問題,需要從資料庫中提取資料.生成html語句 2.傳送htm到郵件中去 public static dataset getdataset string strcommandstring,string strtablename 取得ds using syst...
根據SQLServer資料表生成C 實體類
生成表的實體類工具,有助於減少 量,加快開發速度.第一副圖根據輸入的連線伺服器位址 使用者名稱 登入資料庫名 密碼連線到資料庫.如果錯誤則提示連線失敗.第二幅圖先取的當前資料庫所有的使用者建立的表 然後根據選中的表名取得資料庫中關於此表資訊的的系統表.然後將字段型別轉換為c 資料型別.並輸出的tex...