📄 dyset.cpp
字号:
// DYSet.cpp : implementation file
//
#include "stdafx.h"
#include "flydragon.h"
#include "DYSet.h"
#include "Odbc.h"
#include "afxdb.h"
extern _chan gw_schan[MAX_NUM];
extern COdbc gw_odbc;
extern int checksql(CString *sql);
extern int gw_num;
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDYSet dialog
CDYSet::CDYSet(CWnd* pParent /*=NULL*/)
: CDialog(CDYSet::IDD, pParent)
{
//{{AFX_DATA_INIT(CDYSet)
//}}AFX_DATA_INIT
}
void CDYSet::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDYSet)
DDX_Control(pDX, IDC_CHECK1, m_sql);
DDX_Control(pDX, IDC_SQL, m_sqltext);
DDX_Control(pDX, IDC_EDIT, m_tiaojian);
DDX_Control(pDX, IDC_INDEX, m_index);
DDX_Control(pDX, IDC_PDA, m_pda);
DDX_Control(pDX, IDC_FIELDLIST, m_Cfield);
DDX_Control(pDX, IDC_TABLELIST, m_Ctablist);
DDX_Control(pDX, IDC_TYPE, m_type);
DDX_Control(pDX, IDC_DECLIST, m_Desc);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDYSet, CDialog)
//{{AFX_MSG_MAP(CDYSet)
ON_WM_CANCELMODE()
ON_LBN_SELCHANGE(IDC_DECLIST, OnSelDec)
ON_BN_CLICKED(IDC_BAOCUN, OnBaocun)
ON_BN_CLICKED(IDC_QUXIAO, OnQuxiao)
ON_LBN_DBLCLK(IDC_TABLELIST, OnDblclkTablelist)
ON_LBN_DBLCLK(IDC_FIELDLIST, OnDbFieldlist)
ON_LBN_SELCHANGE(IDC_TABLELIST, OnSelTablelist)
ON_BN_CLICKED(IDC_CHECK1, OnCheck1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDYSet message handlers
BOOL CDYSet::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_nfront = 0;
m_type.AddString("标准");
m_type.AddString("最大值");
m_type.AddString("最小值");
m_type.AddString("非空值");
m_type.SetCurSel(0);
CStringArray table;
gw_odbc.GetTable(&table,1);
for(int j = 0;j<table.GetUpperBound()+1 ;j++)
m_Ctablist.AddString(table.GetAt(j));
//写入控件
ReadTo();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDYSet::OnCancelMode()
{
CDialog::OnCancelMode();
// TODO: Add your message handler code here
}
void CDYSet::OnSelDec()
{
// TODO: Add your control notification handler code here
CString szText;
m_Desc.GetText(m_Desc.GetCurSel(),szText);
szText += "对应设置";
SetDlgItemText(IDC_SHEZHI,szText);
Save(m_nfront);
Load(m_Desc.GetCurSel());
m_nfront = m_Desc.GetCurSel();
}
void CDYSet::OnBaocun()
{
// TODO: Add your control notification handler code here
CString sql;
CString ext;
CString ll;
char buffer[300];
CDatabase m_db;
m_db.OpenEx(gw_odbc.m_DesDsn,0);
Save(m_Desc.GetCurSel());
for(int i = 0;i<gw_num;i++)
{
ext = " WHERE VName =";
ext +="\"";
ext +=gw_schan[i].name + "\"";
ll.Empty();
ll = "UPDATE Interfa SET ";
if(gw_schan[i].sql == 0)
gw_schan[i].text = "";
sprintf(buffer,"PDA = %d,INDEX = %d,VTable = \'%s\',VField = \'%s\',Type = \'%s\',Qual = \'%s\',VSQL = %d,VText = \'%s\' ",
gw_schan[i].pda,
gw_schan[i].index,
gw_schan[i].table,
gw_schan[i].field,
gw_schan[i].types,
gw_schan[i].qual,
gw_schan[i].sql,
gw_schan[i].text);
ll += buffer;
ll += ext;
m_db.ExecuteSQL(ll);
}
m_db.Close();
CDialog::OnCancel();
}
void CDYSet::OnQuxiao()
{
// TODO: Add your control notification handler code here
CDialog::OnCancel();
}
void CDYSet::OnDblclkTablelist()
{
// TODO: Add your control notification handler code here
}
void CDYSet::OnDbFieldlist()
{
// TODO: Add your control notification handler code here
CString field;
CString temp;
CString left;
CString right;
int pos;
GetDlgItemText(IDC_FIELDEDIT,field);
m_Cfield.GetText(m_Cfield.GetCurSel(),temp);
if(field.IsEmpty())
{
field+= temp;
}
else
{
//temp+=",";
if((pos=field.Find(temp)) == -1)
{
field+=",";
field +=temp;
}
else
{
left = field.Left(pos-1);
if(pos == 0)
pos++;
right = field.Right(field.GetLength()-(pos+temp.GetLength()));
field.Empty();
field +=left;
field +=right;
}
}
SetDlgItemText(IDC_FIELDEDIT,field);
}
void CDYSet::OnSelTablelist()
{
// TODO: Add your control notification handler code here
CString table;
CStringArray field;
CString temp;
m_Ctablist.GetText(m_Ctablist.GetCurSel(),temp);
SetDlgItemText(IDC_TABLEEDIT,temp);
m_Ctablist.GetText(m_Ctablist.GetCurSel(),table);
m_Cfield.ResetContent();
SetDlgItemText(IDC_FIELDEDIT,"");
if(table.CompareNoCase(gw_schan[m_Desc.GetCurSel()].table)==0)
SetDlgItemText(IDC_FIELDEDIT,gw_schan[m_Desc.GetCurSel()].field);
gw_odbc.GetColInfo(table,&field,1);
for(int i=0;i<field.GetUpperBound()+1;i++)
m_Cfield.AddString(field.GetAt(i));
}
int CDYSet::deal(char *data,int pos)
{
char temp[1024];
char *pp;
char bak1[5] = ";";
char bak2[5] = ",";
char *point;
int tok = 0;
lstrcpy(temp,data);
point = temp;
pp = temp;
while(temp != NULL)
{
pp = strchr(point,';');
if(tok >8)
break;
*pp = '\0';
switch(tok)
{
case 0:
gw_schan[pos].name = point;
break;
case 1:
gw_schan[pos].pda = atoi(point);
break;
case 2:
gw_schan[pos].index = atoi(point);
break;
case 3:
gw_schan[pos].table = point;
break;
case 4:
gw_schan[pos].field = point;
break;
case 5:
gw_schan[pos].types = point;
break;
case 6:
gw_schan[pos].qual = point;
break;
case 7:
gw_schan[pos].sql = atoi(point);
break;
case 8:
gw_schan[pos].text = point;
break;
default:
break;
}
point = pp+1;
tok++;
}
gw_schan[pos].already = 0;
return 0;
}
int CDYSet::ReadTo()
{
char buffer[20];
for(int i = 0;i<gw_num;i++)
{
m_Desc.AddString(itoa(i+1,buffer,10)+gw_schan[i].name);
}
m_Desc.SetCurSel(0);
Load(0);
// this->OnSelDec();
return 0;
}
int CDYSet::SetDisEnable()
{
m_Ctablist.EnableWindow(false);
m_Cfield.EnableWindow(false);
m_tiaojian.EnableWindow(false);
m_type.EnableWindow(false);
m_sqltext.EnableWindow(true);
return 0;
}
int CDYSet::Load(int value)
{
CString table;
CString field;
int pos;
CString temp;
CString left;
CString text;
CString tep;
m_Ctablist.SetCurSel(-1);
m_Cfield.ResetContent();
if(gw_schan[value].pda == 1)
m_pda.SetCheck(1);
else
m_pda.SetCheck(0);
if(gw_schan[value].index == 1)
m_index.SetCheck(1);
else
m_index.SetCheck(0);
if((gw_schan[value].name.CompareNoCase("车牌号码")==0) || (gw_schan[value].name.CompareNoCase("车牌颜色") == 0))
{
m_sql.SetCheck(0);
m_sql.EnableWindow(false);
}
else
{
m_sql.EnableWindow(true);
}
if(gw_schan[value].sql == 1)
{
m_sql.SetCheck(1);
SetDlgItemText (IDC_SQL, "");
SetDisEnable();
m_sqltext.GetWindowText(text);
temp = gw_schan[value].text;
while(!temp.IsEmpty())
{
pos = temp.Find(",");
if(!text.IsEmpty())
text += "\r\n";
if(pos != -1)
{
left = temp.Left(pos);
text += left;
m_sqltext.SetWindowText(text);
m_sqltext.LineScroll(m_sqltext.GetLineCount(),0);
temp = temp.Right(temp.GetLength()-(pos+1));
}
else
{
text += temp;
m_sqltext.SetWindowText(text);
m_sqltext.LineScroll(m_sqltext.GetLineCount(),0);
break;
}
}
return 0;
}
else
SetEnable();
m_sql.SetCheck(0);
m_Ctablist.SetCurSel(-1);
m_Cfield.ResetContent();
SetDlgItemText (IDC_EDIT, "");
//将表,字段写入
table = gw_schan[value].table;
pos = m_Ctablist.FindStringExact(0,table);
if(pos>=0)
{
m_Ctablist.SetCurSel(pos);
this->OnSelTablelist();
}
SetDlgItemText(IDC_TABLEEDIT,table);
field = gw_schan[value].field;
SetDlgItemText(IDC_FIELDEDIT,field);
if((pos =field.Find(","))!=-1)
tep = field.Left(pos);
else
tep = field;
m_Cfield.SelectString(0,tep);
m_type.SelectString(0,gw_schan[value].types);
//m_tiaojian.GetWindowText(text);
m_tiaojian.SetWindowText(NULL);
temp = gw_schan[value].qual;
while(!temp.IsEmpty())
{
pos = temp.Find(",");
if(!text.IsEmpty())
text += "\r\n";
if(pos != -1)
{
left = temp.Left(pos);
text += left;
m_tiaojian.SetWindowText(text);
m_tiaojian.LineScroll(m_tiaojian.GetLineCount(),0);
temp = temp.Right(temp.GetLength()-(pos+1));
}
else
{
text += temp;
m_tiaojian.SetWindowText(text);
m_tiaojian.LineScroll(m_tiaojian.GetLineCount(),0);
break;
}
}
return 0;
}
int CDYSet::Save(int value)
{
CString table;
CString field;
CString temp;
CString bak;
char ll[100];
bak.Empty();
//memset(ll,0,sizeof(ll));
ll[0] = '\0';
if(m_pda.GetCheck() == 1)
gw_schan[value].pda = 1;
else
gw_schan[value].pda = 0;
if(m_index.GetCheck() == 1)
gw_schan[value].index = 1;
else
gw_schan[value].index = 0;
//将表,字段写入
if(m_sql.GetCheck() == 1)
{
gw_schan[value].sql = 1;
for(int i = 0;i < m_sqltext.GetLineCount();i++)
{
m_sqltext.GetLine(i,ll,sizeof(ll));
temp = ll;
checksql(&temp);
bak +=temp;
bak +=",";
}
gw_schan[value].text =bak.Left(bak.GetLength()-1);
m_sqltext.SetWindowText("");
return 0;
}
else
{
gw_schan[value].sql = 0;
GetDlgItemText(IDC_TABLEEDIT,table);
gw_schan[value].table = table;
GetDlgItemText(IDC_FIELDEDIT,field);
gw_schan[value].field = field;
CString type;
m_type.GetLBText(m_type.GetCurSel(),type);
gw_schan[value].types = type;
bak.Empty();
memset(ll,0,sizeof(ll));
CString jjk;
m_tiaojian.GetWindowText(bak);
for(int j= 0;j < m_tiaojian.GetLineCount();j++)
{
m_tiaojian.GetLine(j,(LPTSTR)(LPCTSTR)jjk,jjk.GetLength());//strlen(ll));
// m_tiaojian.GetWindowText(jjk);
//MessageBox(jjk);
bak +=ll;
bak +=",";
}
gw_schan[value].qual =bak.Left(bak.GetLength()-1);
}
return 0;
}
int CDYSet::SetEnable()
{
m_Ctablist.EnableWindow(true);
m_Cfield.EnableWindow(true);
m_tiaojian.EnableWindow(true);
m_type.EnableWindow(true);
m_sqltext.EnableWindow(false);
return 0;
}
void CDYSet::OnCheck1()
{
// TODO: Add your control notification handler code here
if(m_sql.GetCheck() == 1)
SetDisEnable();
else
SetEnable();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -