當前位置:編程學習大全網 - 編程語言 - MFC數據庫編程,想設置權限,普通用戶登入比管理員登入顯示的表中數據要少壹些。

MFC數據庫編程,想設置權限,普通用戶登入比管理員登入顯示的表中數據要少壹些。

void CLoginDlg::InitDlgPara()

{

if(m_pOperate_List)

{

delete []m_pOperate_List;

m_pOperate_List=NULL;

}

m_Count=0;

while (m_CombOper.GetCount())

{

m_CombOper.DeleteString(m_CombOper.GetCount()-1);

}

m_StaPass.SetWindowText("");

m_Count=ReadOperateWithOperateID(&g_adoRecordSet,0,m_pOperate_List);

for(int i=0;i<m_Count;i++)

{

m_CombOper.InsertString(m_CombOper.GetCount(),m_pOperate_List[i].Operate_Name);

m_CombOper.SetItemData(m_CombOper.GetCount()-1,m_pOperate_List[i].Operate_ID);

}

m_CombOper.SetCurSel(0);

m_StaPass.SetFocus();

m_StaPass.SendMessage(EM_SETSEL,(int) 0,(int)200);

m_StaPass.Invalidate(TRUE);

}

void CLoginDlg::OnOK()

{

UpdateData(TRUE);

if (m_pOperate_List)

{

int n=m_CombOper.GetCurSel();

if (m_Pass!=m_pOperate_List[n].Operate_Password)

{

AfxMessageBox("密碼錯誤");

m_StaPass.SetFocus();

m_StaPass.SendMessage(EM_SETSEL,(int) 0,(int)200);

m_StaPass.Invalidate(TRUE);

return;

}

else

{

memcpy(&g_Cur_Operate,m_pOperate_List+n,sizeof(TABLE_OPERATE));

CDialog::OnOK();

}

}

else

{

AfxMessageBox("open database error");

this->EndDialog(IDNO);

}

CDialog::OnOK();

}

int ReadOperateWithOperateID(void *pVoid,int Operate_ID,TABLE_OPERATE *&pOperate_List)

{

CAdoRecordSet *pRecord=NULL;

CDBInterface *pDBInterface=NULL;

char *pTableBuff=NULL;

int iBuffLen=0;

#if DATABASE_METHOD == DATABASE_METHOD_ADO

pRecord=(CAdoRecordSet *)pVoid;

#else if DATABASE_METHOD == DATABASE_METHOD_ODBC

pDBInterface=(CDBInterface *)pVoid;

#endif

int nCount=0;

if (pOperate_List)

{

free(pOperate_List);

pOperate_List=NULL;

}

if ((pRecord==NULL&&pDBInterface==NULL) || Operate_ID<0 )

{

return 0;

}

char sql[1024];

TABLE_OPERATE *pReturn=NULL;

BOOL bRet=FALSE;

switch(Operate_ID)

{

case 0:

sprintf(sql,"SELECT TOP 5000 * FROM TABLE_Operate order by ID");

break;

default :

sprintf(sql,"SELECT TOP 5000 * FROM TABLE_Operate\

where ID=%d ",Operate_ID);

}

#if DATABASE_METHOD == DATABASE_METHOD_ADO

bRet=pRecord->Open(sql);

#else if DATABASE_METHOD == DATABASE_METHOD_ODBC

bRet=pDBInterface->odbc_select(sql,pTableBuff,&iBuffLen,FALSE);

#endif

if (bRet>0)

{

#if DATABASE_METHOD == DATABASE_METHOD_ADO

nCount=pRecord->GetRecordCount();

#else if DATABASE_METHOD == DATABASE_METHOD_ODBC

nCount=bRet;

#endif

if (nCount<=0)

{

return 0;

}

nCount=nCount>MAX_RECORDSET_NUM?MAX_RECORDSET_NUM:nCount;

pReturn=(TABLE_OPERATE *)malloc(sizeof(TABLE_OPERATE)*nCount);

memset(pReturn,0x0,sizeof(TABLE_OPERATE)*nCount);

#if DATABASE_METHOD == DATABASE_METHOD_ADO

for(int i=0;i<nCount;i++)

{

pRecord->GetCollect((long)0,(pReturn+i)->Operate_ID);

CString sTemp;

pRecord->GetCollect(1,sTemp);

sprintf((pReturn+i)->Operate_Name,sTemp);

pRecord->GetCollect(2,sTemp);

sprintf((pReturn+i)->Operate_Password,sTemp);

pRecord->GetCollect(3,(pReturn+i)->Operate_Degree);

pRecord->GetCollect(4,(pReturn+i)->Operate_Degree_ID);

pRecord->GetCollect(5,(pReturn+i)->Operate_Dept_ID);

pRecord->GetCollect(6,(pReturn+i)->Operate_Create_Time);

pRecord->GetCollect(7,sTemp);

sprintf((pReturn+i)->Operate_Tele_Code,sTemp);

pRecord->GetCollect(8,sTemp);

sprintf((pReturn+i)->Operate_Remark,sTemp);

pRecord->MoveNext();

}

#else if DATABASE_METHOD == DATABASE_METHOD_ODBC

memcpy(pReturn,pTableBuff,sizeof(TABLE_OPERATE)*nCount);

if (pTableBuff)

{

delete pTableBuff;

pTableBuff=NULL;

}

#endif

}

pOperate_List=pReturn;

return nCount;

}

  • 上一篇:1020雙漢卡的安裝
  • 下一篇:Java套接字編程登錄
  • copyright 2024編程學習大全網