當多位統計人員分別統計部分問卷,需將各自資料庫合併為完整統計結果。本章實作「合併統計」:匯入外部資料庫,比對問卷 ID,將選項計數累加至主資料庫,並更新問卷統計份數。
OpenFileDialog 選擇外部 .mdb 檔。..\..\DataBase\1.mdb。Lj_Result 表(統計明細)與 Lj_Survey 表(統計份數)。Result_Sid(問卷 ID)、Result_Tid(題目 ID)、Result_Content(選項內容),以 UPDATE Lj_Result SET Result_Count = Result_Count + 外部計數 WHERE ... 累加計數。Lj_Survey.Survey_Count(總統計份數)。// 合併單一問卷
string sql = "Select Result_Sid,Result_Tid,Result_Content,Result_Count From Lj_Result Where Result_Sid=" + surveyId;
DataTable dt = dboperate.GetTable(sql);
for (int i = 0; i < dt.Rows.Count; i++)
{
string upSql = "Update Lj_Result Set Result_Count=Result_Count+" + dt.Rows[i][3] +
" Where Result_Sid=" + dt.Rows[i][0] +
" and Result_Tid=" + dt.Rows[i][1] +
" and Result_Content='" + dt.Rows[i][2] + "'";
if (dboperate.ExcuteIntSql(upSql) > 0) successCount++;
proBar.Value = i + 1;
}
if (successCount > 0)
{
int extCount = dboperate.ExcueteIntSql("Select Survey_Count From Lj_Survey Where id=" + surveyId);
dboperate.ExcuteSql("Update Lj_Survey Set Survey_Count=Survey_Count+" + extCount + " Where id=" + surveyId);
File.Delete(@"..\..\DataBase\1.mdb");
MessageBox.Show("合併成功!");
}
另提供「全部合併」選項,自動遍歷所有問卷執行上述邏輯。完整程式碼含例外處理、UI 狀態控制,可直接套用於類似離線統計合併場景。