程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> VC++開發簡易輸電線路管理信息系統

VC++開發簡易輸電線路管理信息系統

編輯:C++入門知識

VC++開發簡易輸電線路管理信息系統


准備開發簡易輸電線路管理信息系統;方便起見;下一個源碼來改;

1 下的源碼運行截圖如下;

\

2 拷貝一份,改名,打開;

\

 

3 用mdb操作工具修改該源碼自帶的mdb數據庫;

\

 

\

 

\

修改了其中兩個表為輸電線路表,一個是架線分類表;一個是線路信息表;

\

加入3條測試記錄;

4 原界面和修改界面

\

 

\

 

5 修改應用程序App類中連接數據庫的名稱;

BOOL CLhwyApp::InitInstance()
{
// AfxGetModuleState()->m_dwVersion = 0x0601;

if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}

CString sPath;
GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
sPath.ReleaseBuffer ();
int nPos;
nPos=sPath.ReverseFind ('\\');
sPath=sPath.Left (nPos);
nPos=sPath.ReverseFind('\\');
sPath=sPath.Left (nPos);
CString lpszFile = sPath + "\\shdxl.mdb";

......

修改打開的表名稱;

BOOL CBaDialog::OnInitDialog()
{
CDialog::OnInitDialog();
CDRecordset m_Set(&theApp.m_DB);
CBRecordset m_bSet(&theApp.m_DB);
CTRecordset m_tSet(&theApp.m_DB);

unsigned i=0;
CODBCFieldInfo Info;
//m_Set.Open(AFX_DB_USE_DEFAULT_TYPE,"一班STUDENT");
m_Set.Open(AFX_DB_USE_DEFAULT_TYPE,"xlinfo");
m_ListCtrlx.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);

......

 

6 運行下;

\

出現如圖錯誤;

7 下面是關於此錯誤的論述資料;

VC ACCESS 參數不足 期待是n
"參數不足,期待是n(n=1,2,3......)"的解決辦法如下:
在CRecordset的派生類,如COBosSet中,找到GetDefaultSQL()函數
將return _T("[表]")
修改為 return _T("[新表]")
例一:原表為"1",新表為"2"
則只需要將表名修改正確,即:將return _T("[1]")修改為 return _T("[2]")
例二:原表為 "1" 新加入表為"1"和"2"
則需加入新表,即:將return _T("[1]")修改為 return _T("[1],[2]")
注意:不要寫成return _T("[1]","[2]")
還有就是,你打開數據庫的時候那個變量是不是和數據庫中的列
名是不是一樣的.當變量名不同時.也會出現這個問題!

 

8 該項目有多個不同的XRecordSet類,繼承自CRecordset;

分別對應不同的表;

按7的論述;修改表名,字段類型,名稱等;修改後代碼如下;對應頭文件也要修改相應數據類型;

CDRecordset::CDRecordset(CDatabase* pdb)
: CRecordset(pdb)
{
//{{AFX_FIELD_INIT(CDRecordset)
m_column1 = 0;
m_column2 = _T("");
m_column3 = 0;
m_column4 = _T("");
m_column5 = _T("");
m_column6 = _T("");
m_column7 = _T("");
m_column8 = _T("");
m_column9 = _T("");
m_nFields = 9;
//}}AFX_FIELD_INIT
m_nDefaultType = snapshot;
}

CString CDRecordset::GetDefaultConnect()
{
return _T("ODBC;DSN=lhwy");
}

CString CDRecordset::GetDefaultSQL()
{
//return _T("[NO1STUDENT]");
return _T("[xlinfo]");
}

void CDRecordset::DoFieldExchange(CFieldExchange* pFX)
{
//{{AFX_FIELD_MAP(CDRecordset)
pFX->SetFieldType(CFieldExchange::outputColumn);
RFX_Int(pFX, _T("[id]"), m_column1);
RFX_Text(pFX, _T("[name]"), m_column2);
RFX_Int(pFX, _T("[length]"), m_column3);
RFX_Text(pFX, _T("[dengji]"), m_column4);
RFX_Text(pFX, _T("[qizhidian]"), m_column5);
RFX_Text(pFX, _T("[dixingdimao]"), m_column6);
RFX_Text(pFX, _T("[dizhi]"), m_column7);
RFX_Text(pFX, _T("[jiaotong]"), m_column8);
RFX_Text(pFX, _T("[linmu]"), m_column9);
//}}AFX_FIELD_MAP
}

 

出現如下兩個錯誤;

error C2664: 'RFX_Long' : cannot convert parameter 3 from 'int' to 'long &'
error C2664: 'RFX_Single' : cannot convert parameter 3 from 'int' to 'float &'
是因為RFX_XXX宏要對應數據類型;
RFX_Long(pFX, _T("[學號]"), m_column1);
RFX_Int(pFX, _T("[學號]"), m_column1);

9 還有 參數不足,期待是n 的錯誤;

因為還有表的字段沒對上;先注釋掉;看下效果;如下所示;

\

要改的地方尚多;有時間繼續;

 

10 下載用來修改的源碼來自此處;此處的VC++數據庫和MIS系統源碼索引的比較好,容易找;記錄一下;

\

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved