用PDA記錄每日量測血壓值。
下階段目標︰
透過資料同步將yy.db上傳至個人電腦
使用程式︰
NSBASIC2.0
程式設計畫面
各元件名稱
程式內容
開始after()部份
Sub Form1003_After()
Dim int_open as Integer 定義變數int_open為整數型態
Dim int_read as Integer定義變數int_read為整數型態
Dim int_create as Integer定義變數int_create為整數型態
Dim int_rec_no as Integer定義變數int_rec_no為整數型態
Dim str_db_name as String定義變數str_db_name為字串型態
Dim i as Integer定義變數i為整數型態
str_db_name="YY_db"設定資料庫檔案名稱為yy_db
field_adate.SetFocus將游標設在日期欄位
List1014.Clear清空List1014所有資料
int_open=dbopen(my_db,str_db_name,0)'開啟資料庫(資料庫名稱my_db,資料庫檔案名稱為yy_db,資料不放在記億卡上
If int_open<>0 Then如果資料庫不存在則執行下一行
int_create=DbCreate(my_db,"YY_db",0,"TJW1"建立資料庫(資料庫名稱my_db、資料庫檔案名稱為yy_db、資料不放在記億卡上、資料庫idtjw1(此為資料庫id可隨便設)
int_open=dbopen(my_db,str_db_name,0)開啟資料庫(資料庫名稱my_db,資料庫檔案名稱為yy_db,資料不放在記億卡上
MsgBox "資料庫重新建立完成..."秀訊息視窗 "資料庫重新建立完成..."
Else如果資料庫存在則執行下一行
List1014.Clear清空List1014所有資料
int_rec_no=DbGetNoRecs(my_db)取得my_db資料庫內項目資料(int_rec_no)數目
If int_rec_no=0 Then如果(int_rec_no)無數目則執行下一行
MsgBox "目前資料庫並未建立任何資料..."+str(int_open)"秀訊息視窗 "目前資料庫並未建立任何資料"
Else否則執行呼叫副程式RefreshList()
Call RefreshList()
End If
End If
End Sub
本段程式說明一開始執行時會先將游標定位在日期輸入欄位並檢查是否已建立資料庫如無就建立有就呼叫下面的副程式讀出資料
[按鈕]選擇日期部份
Sub object1007()
Dim int_res as Integer定義變數int_res為整數型態
Dim date_sel as Integer定義變數date_sel為整數型態
Dim day_0 as Integer定義變數int_res為整數型態
date_sel=Today()將今天日期放入date_sel 中
int_res=PopupDate(date_sel,"請選擇日期")顯示月曆日期輸入界面並將選擇的日期放入date_sel 中
day_0=day(date_sel)將本日丟入date_sel 中
If day_0<10如果day_0<0
field_adate.Text=str(month(date_sel))+"/"+"0"+str(day_0)將月份與日期顯示於field_adate
Else
field_adate.Text=str(month(date_sel))+"/"+str(day(date_sel))將月份與日期顯示於field_adate
End If
End Sub
這段程式目的在取得pda內部的日曆並將數字內容放在日期輸入中,其中day_0變數為了排序需要所以未滿2位數日期一律在前面補零再顯示
[按鈕]新增部份
Sub object1013()
Dim int_ins as Integer定義變數int_ins為整數型態
Dim my_rec as number定義變數my_rec為number相關
Dim int_rec_no as Integer定義變數int_rec_no為整數型態
my_rec.DAYYEAR=Trim(field_adate.Text)將field_adate.Text的數字去除前後空白後放入my_rec.DAYYEAR
my_rec.highblood=Trim(Field_highblood.Text)將Field_highblood.Text的數字去除前後空白後放入my_rec.highblood
my_rec.lowblood=Trim(Field_lowblood.Text)將my_rec.lowblood的數字去除前後空白後放入Field_lowblood.Text
my_rec.heart=Trim(Field_heart.Text)將my_rec.heart的數字去除前後空白後放入Field_heart.Text
If my_rec.DAYYEAR<>"" And my_rec.highblood<>"" And my_rec.lowblood<>"" And my_rec.heart<>""Then
如果讀到所需資料呼叫InsertData(my_rec)副程式
Call InsertData(my_rec)
Field_highblood.text=""
Field_lowblood.text=""
Field_heart.text=""
field_adate.SetFocus
清空輸入資料並將游標設在field_adate
Else
MsgBox "請輸入正確的資料..."
End If
如果讀不到資料或少讀到一項資料則顯示"請輸入正確的資料..."
End Sub
按下新增資料
副程式部份
Global my_db as Database設定資料全域變數
設訂number資料結構型態
Type NUMBER
DAYYEAR as String DAYYEAR為字串型態
highblood as String highblood為字串型態
lowblood as String lowblood為字串型態
heart as String heart為字串型態
End Type
從資料庫中讀取物件並顯示在List1014中
Sub RefreshList()
Dim i as Integer定義變數i 為整數型態
Dim int_rec_no as Integer定義變數int_rec_no 為整數型態
Dim int_read as Integer定義變數int_read為整數型態
Dim str_DAYYEAR as String定義變數str_DAYYEAR為字串型態
Dim str_highblood as String定義變數str_highblood為字串型態
Dim str_lowblood as String定義變數str_lowblood 為字串型態
Dim str_heart as String定義變數str_heart為字串型態
Dim str_key as String定義變數str_key為字串型態
int_rec_no=DbGetNoRecs(my_db)從資料庫中取得記錄數到int_rec_no
List1014.Clear清空List1014
int_read=DbReset(my_db)重設(my_db)庫並傳回int_read
For i=1 to int_rec_no從資料庫中逐筆讀出資料
int_read=DbReadNext(my_db,str_key,str_DAYYEAR,str_highblood,str_lowblood,str_heart)
第一筆:讀出下一筆str_key,str_DAYYEAR,str_highblood,str_lowblood,str_heart的值
List1014.Add str(i)+")"+str_DAYYEAR+"<=>["+str_highblood+"/"+str_lowblood+"]<=>["+str_heart+"]"
印出{i}){str_DAYYEAR}<=>[{str_highblood}]/[str_lowblood}]<=>[{str_heart}]
Next i+1直到int_rec_no
End Sub
新增副程式
Sub InsertData(my_rec as NUMBER)
Dim int_rec_no as Integer定義變數int_rec_no 為整數型態
Dim int_ins as Integer定義變數int_ins 為整數型態
Dim str_key as String定義變數str_key 為字串型態
str_key=trim(my_rec.DAYYEAR+my_rec.highblood+my_rec.lowblood+my_rec.heart)
將my_rec.DAYYEAR+my_rec.highblood+my_rec.lowblood+my_rec.heart的值去除空白後放入str_key
int_ins=DbInsert(my_db,str_key,my_rec)將所有數據丟入資料庫中
If int_ins=0 Then如果回傳是0印新增成功
MsgBox "新增成功!"
Else
MsgBox "新增失敗!(code="+str(int_ins)+")"
End If
Call RefreshList()
End Sub