提交 a66fed0f 编写于 作者: 御承扬

Update

上级 74120ad5
此差异已折叠。
此差异已折叠。
此差异已折叠。
// 从类型库向导中用“添加类”创建的计算机生成的 IDispatch 包装器类
// #import "C:\\Program Files (x86)\\Microsoft Office\\Root\\Office16\\EXCEL.EXE" no_namespace
// CWorkbooks 包装器类
#include "stdafx.h"
class CWorkbooks : public COleDispatchDriver
{
public:
CWorkbooks() {} // 调用 COleDispatchDriver 默认构造函数
CWorkbooks(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {}
CWorkbooks(const CWorkbooks& dispatchSrc) : COleDispatchDriver(dispatchSrc) {}
// 特性
public:
// 操作
public:
// Workbooks 方法
public:
LPDISPATCH get_Application()
{
LPDISPATCH result;
InvokeHelper(0x94, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);
return result;
}
long get_Creator()
{
long result;
InvokeHelper(0x95, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, nullptr);
return result;
}
LPDISPATCH get_Parent()
{
LPDISPATCH result;
InvokeHelper(0x96, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);
return result;
}
LPDISPATCH Add(VARIANT& Template)
{
LPDISPATCH result;
static BYTE parms[] = VTS_VARIANT;
InvokeHelper(0xb5, DISPATCH_METHOD, VT_DISPATCH, (void*)&result, parms, &Template);
return result;
}
void Close()
{
InvokeHelper(0x115, DISPATCH_METHOD, VT_EMPTY, nullptr, nullptr);
}
long get_Count()
{
long result;
InvokeHelper(0x76, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, nullptr);
return result;
}
LPDISPATCH get_Item(VARIANT& Index)
{
LPDISPATCH result;
static BYTE parms[] = VTS_VARIANT;
InvokeHelper(0xaa, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, parms, &Index);
return result;
}
LPUNKNOWN get__NewEnum()
{
LPUNKNOWN result;
InvokeHelper(0xfffffffc, DISPATCH_PROPERTYGET, VT_UNKNOWN, (void*)&result, nullptr);
return result;
}
LPDISPATCH _Open(LPCTSTR Filename, VARIANT& UpdateLinks, VARIANT& ReadOnly, VARIANT& Format, VARIANT& Password, VARIANT& WriteResPassword, VARIANT& IgnoreReadOnlyRecommended, VARIANT& Origin, VARIANT& Delimiter, VARIANT& Editable, VARIANT& Notify, VARIANT& Converter, VARIANT& AddToMru)
{
LPDISPATCH result;
static BYTE parms[] = VTS_BSTR VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT;
InvokeHelper(0x2aa, DISPATCH_METHOD, VT_DISPATCH, (void*)&result, parms, Filename, &UpdateLinks, &ReadOnly, &Format, &Password, &WriteResPassword, &IgnoreReadOnlyRecommended, &Origin, &Delimiter, &Editable, &Notify, &Converter, &AddToMru);
return result;
}
void __OpenText(LPCTSTR Filename, VARIANT& Origin, VARIANT& StartRow, VARIANT& DataType, long TextQualifier, VARIANT& ConsecutiveDelimiter, VARIANT& Tab, VARIANT& Semicolon, VARIANT& Comma, VARIANT& Space, VARIANT& Other, VARIANT& OtherChar, VARIANT& FieldInfo, VARIANT& TextVisualLayout)
{
static BYTE parms[] = VTS_BSTR VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_I4 VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT;
InvokeHelper(0x2ab, DISPATCH_METHOD, VT_EMPTY, nullptr, parms, Filename, &Origin, &StartRow, &DataType, TextQualifier, &ConsecutiveDelimiter, &Tab, &Semicolon, &Comma, &Space, &Other, &OtherChar, &FieldInfo, &TextVisualLayout);
}
LPDISPATCH get__Default(VARIANT& Index)
{
LPDISPATCH result;
static BYTE parms[] = VTS_VARIANT;
InvokeHelper(0x0, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, parms, &Index);
return result;
}
void _OpenText(LPCTSTR Filename, VARIANT& Origin, VARIANT& StartRow, VARIANT& DataType, long TextQualifier, VARIANT& ConsecutiveDelimiter, VARIANT& Tab, VARIANT& Semicolon, VARIANT& Comma, VARIANT& Space, VARIANT& Other, VARIANT& OtherChar, VARIANT& FieldInfo, VARIANT& TextVisualLayout, VARIANT& DecimalSeparator, VARIANT& ThousandsSeparator)
{
static BYTE parms[] = VTS_BSTR VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_I4 VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT;
InvokeHelper(0x6ed, DISPATCH_METHOD, VT_EMPTY, nullptr, parms, Filename, &Origin, &StartRow, &DataType, TextQualifier, &ConsecutiveDelimiter, &Tab, &Semicolon, &Comma, &Space, &Other, &OtherChar, &FieldInfo, &TextVisualLayout, &DecimalSeparator, &ThousandsSeparator);
}
LPDISPATCH Open(LPCTSTR Filename, VARIANT& UpdateLinks, VARIANT& ReadOnly, VARIANT& Format, VARIANT& Password, VARIANT& WriteResPassword, VARIANT& IgnoreReadOnlyRecommended, VARIANT& Origin, VARIANT& Delimiter, VARIANT& Editable, VARIANT& Notify, VARIANT& Converter, VARIANT& AddToMru, VARIANT& Local, VARIANT& CorruptLoad)
{
LPDISPATCH result;
static BYTE parms[] = VTS_BSTR VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT;
InvokeHelper(0x783, DISPATCH_METHOD, VT_DISPATCH, (void*)&result, parms, Filename, &UpdateLinks, &ReadOnly, &Format, &Password, &WriteResPassword, &IgnoreReadOnlyRecommended, &Origin, &Delimiter, &Editable, &Notify, &Converter, &AddToMru, &Local, &CorruptLoad);
return result;
}
void OpenText(LPCTSTR Filename, VARIANT& Origin, VARIANT& StartRow, VARIANT& DataType, long TextQualifier, VARIANT& ConsecutiveDelimiter, VARIANT& Tab, VARIANT& Semicolon, VARIANT& Comma, VARIANT& Space, VARIANT& Other, VARIANT& OtherChar, VARIANT& FieldInfo, VARIANT& TextVisualLayout, VARIANT& DecimalSeparator, VARIANT& ThousandsSeparator, VARIANT& TrailingMinusNumbers, VARIANT& Local)
{
static BYTE parms[] = VTS_BSTR VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_I4 VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT;
InvokeHelper(0x784, DISPATCH_METHOD, VT_EMPTY, nullptr, parms, Filename, &Origin, &StartRow, &DataType, TextQualifier, &ConsecutiveDelimiter, &Tab, &Semicolon, &Comma, &Space, &Other, &OtherChar, &FieldInfo, &TextVisualLayout, &DecimalSeparator, &ThousandsSeparator, &TrailingMinusNumbers, &Local);
}
LPDISPATCH OpenDatabase(LPCTSTR Filename, VARIANT& CommandText, VARIANT& CommandType, VARIANT& BackgroundQuery, VARIANT& ImportDataAs)
{
LPDISPATCH result;
static BYTE parms[] = VTS_BSTR VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT;
InvokeHelper(0x813, DISPATCH_METHOD, VT_DISPATCH, (void*)&result, parms, Filename, &CommandText, &CommandType, &BackgroundQuery, &ImportDataAs);
return result;
}
void CheckOut(LPCTSTR Filename)
{
static BYTE parms[] = VTS_BSTR;
InvokeHelper(0x815, DISPATCH_METHOD, VT_EMPTY, nullptr, parms, Filename);
}
BOOL CanCheckOut(LPCTSTR Filename)
{
BOOL result;
static BYTE parms[] = VTS_BSTR;
InvokeHelper(0x816, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, Filename);
return result;
}
LPDISPATCH _OpenXML(LPCTSTR Filename, VARIANT& Stylesheets)
{
LPDISPATCH result;
static BYTE parms[] = VTS_BSTR VTS_VARIANT;
InvokeHelper(0x817, DISPATCH_METHOD, VT_DISPATCH, (void*)&result, parms, Filename, &Stylesheets);
return result;
}
LPDISPATCH OpenXML(LPCTSTR Filename, VARIANT& Stylesheets, VARIANT& LoadOption)
{
LPDISPATCH result;
static BYTE parms[] = VTS_BSTR VTS_VARIANT VTS_VARIANT;
InvokeHelper(0x8e8, DISPATCH_METHOD, VT_DISPATCH, (void*)&result, parms, Filename, &Stylesheets, &LoadOption);
return result;
}
// Workbooks 属性
public:
};
此差异已折叠。
// 从类型库向导中用“添加类”创建的计算机生成的 IDispatch 包装器类
// #import "C:\\Program Files (x86)\\Microsoft Office\\Root\\Office16\\EXCEL.EXE" no_namespace
// CWorksheets 包装器类
#include "stdafx.h"
class CWorksheets : public COleDispatchDriver
{
public:
CWorksheets() {} // 调用 COleDispatchDriver 默认构造函数
CWorksheets(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {}
CWorksheets(const CWorksheets& dispatchSrc) : COleDispatchDriver(dispatchSrc) {}
// 特性
public:
// 操作
public:
// Worksheets 方法
public:
LPDISPATCH get_Application()
{
LPDISPATCH result;
InvokeHelper(0x94, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);
return result;
}
long get_Creator()
{
long result;
InvokeHelper(0x95, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, nullptr);
return result;
}
LPDISPATCH get_Parent()
{
LPDISPATCH result;
InvokeHelper(0x96, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);
return result;
}
LPDISPATCH Add(VARIANT& Before, VARIANT& After, VARIANT& Count, VARIANT& Type)
{
LPDISPATCH result;
static BYTE parms[] = VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT;
InvokeHelper(0xb5, DISPATCH_METHOD, VT_DISPATCH, (void*)&result, parms, &Before, &After, &Count, &Type);
return result;
}
void Copy(VARIANT& Before, VARIANT& After)
{
static BYTE parms[] = VTS_VARIANT VTS_VARIANT;
InvokeHelper(0x227, DISPATCH_METHOD, VT_EMPTY, nullptr, parms, &Before, &After);
}
long get_Count()
{
long result;
InvokeHelper(0x76, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, nullptr);
return result;
}
void Delete()
{
InvokeHelper(0x75, DISPATCH_METHOD, VT_EMPTY, nullptr, nullptr);
}
void FillAcrossSheets(LPDISPATCH Range, long Type)
{
static BYTE parms[] = VTS_DISPATCH VTS_I4;
InvokeHelper(0x1d5, DISPATCH_METHOD, VT_EMPTY, nullptr, parms, Range, Type);
}
LPDISPATCH get_Item(VARIANT& Index)
{
LPDISPATCH result;
static BYTE parms[] = VTS_VARIANT;
InvokeHelper(0xaa, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, parms, &Index);
return result;
}
void Move(VARIANT& Before, VARIANT& After)
{
static BYTE parms[] = VTS_VARIANT VTS_VARIANT;
InvokeHelper(0x27d, DISPATCH_METHOD, VT_EMPTY, nullptr, parms, &Before, &After);
}
LPUNKNOWN get__NewEnum()
{
LPUNKNOWN result;
InvokeHelper(0xfffffffc, DISPATCH_PROPERTYGET, VT_UNKNOWN, (void*)&result, nullptr);
return result;
}
void __PrintOut(VARIANT& From, VARIANT& To, VARIANT& Copies, VARIANT& Preview, VARIANT& ActivePrinter, VARIANT& PrintToFile, VARIANT& Collate)
{
static BYTE parms[] = VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT;
InvokeHelper(0x389, DISPATCH_METHOD, VT_EMPTY, nullptr, parms, &From, &To, &Copies, &Preview, &ActivePrinter, &PrintToFile, &Collate);
}
void PrintPreview(VARIANT& EnableChanges)
{
static BYTE parms[] = VTS_VARIANT;
InvokeHelper(0x119, DISPATCH_METHOD, VT_EMPTY, nullptr, parms, &EnableChanges);
}
void Select(VARIANT& Replace)
{
static BYTE parms[] = VTS_VARIANT;
InvokeHelper(0xeb, DISPATCH_METHOD, VT_EMPTY, nullptr, parms, &Replace);
}
LPDISPATCH get_HPageBreaks()
{
LPDISPATCH result;
InvokeHelper(0x58a, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);
return result;
}
LPDISPATCH get_VPageBreaks()
{
LPDISPATCH result;
InvokeHelper(0x58b, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, nullptr);
return result;
}
VARIANT get_Visible()
{
VARIANT result;
InvokeHelper(0x22e, DISPATCH_PROPERTYGET, VT_VARIANT, (void*)&result, nullptr);
return result;
}
void put_Visible(VARIANT& newValue)
{
static BYTE parms[] = VTS_VARIANT;
InvokeHelper(0x22e, DISPATCH_PROPERTYPUT, VT_EMPTY, nullptr, parms, &newValue);
}
LPDISPATCH get__Default(VARIANT& Index)
{
LPDISPATCH result;
static BYTE parms[] = VTS_VARIANT;
InvokeHelper(0x0, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, parms, &Index);
return result;
}
void _PrintOut(VARIANT& From, VARIANT& To, VARIANT& Copies, VARIANT& Preview, VARIANT& ActivePrinter, VARIANT& PrintToFile, VARIANT& Collate, VARIANT& PrToFileName)
{
static BYTE parms[] = VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT;
InvokeHelper(0x6ec, DISPATCH_METHOD, VT_EMPTY, nullptr, parms, &From, &To, &Copies, &Preview, &ActivePrinter, &PrintToFile, &Collate, &PrToFileName);
}
void PrintOut(VARIANT& From, VARIANT& To, VARIANT& Copies, VARIANT& Preview, VARIANT& ActivePrinter, VARIANT& PrintToFile, VARIANT& Collate, VARIANT& PrToFileName, VARIANT& IgnorePrintAreas)
{
static BYTE parms[] = VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT;
InvokeHelper(0x939, DISPATCH_METHOD, VT_EMPTY, nullptr, parms, &From, &To, &Copies, &Preview, &ActivePrinter, &PrintToFile, &Collate, &PrToFileName, &IgnorePrintAreas);
}
LPDISPATCH Add2(VARIANT& Before, VARIANT& After, VARIANT& Count, VARIANT& NewLayout)
{
LPDISPATCH result;
static BYTE parms[] = VTS_VARIANT VTS_VARIANT VTS_VARIANT VTS_VARIANT;
InvokeHelper(0xbee, DISPATCH_METHOD, VT_DISPATCH, (void*)&result, parms, &Before, &After, &Count, &NewLayout);
return result;
}
// Worksheets 属性
public:
};
......@@ -5,7 +5,9 @@
#include "数据库操作.h"
#include "DBOption.h"
#include "afxdialogex.h"
#include "Excel.h"
using namespace std;
// CDBOption 对话框
......@@ -17,6 +19,7 @@ CDBOption::CDBOption(CWnd* pParent /*=nullptr*/)
, m_Name(_T(""))
, m_Sex(_T(""))
, m_Age(_T(""))
, m_strImportFilePath(_T(""))
{
}
......@@ -24,11 +27,7 @@ CDBOption::CDBOption(CWnd* pParent /*=nullptr*/)
CDBOption::~CDBOption()
{
}
BOOL CDBOption::InitInstance()
{
AfxOleInit();
return TRUE;
}
void CDBOption::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
......@@ -37,6 +36,8 @@ void CDBOption::DoDataExchange(CDataExchange* pDX)
DDX_Text(pDX, IDC_EDIT_NAME, m_Name);
DDX_Text(pDX, IDC_EDIT_SEX, m_Sex);
DDX_Text(pDX, IDC_EDIT_AGE, m_Age);
DDX_Control(pDX, IDC_LIST1, m_list);
DDX_Text(pDX, IDC_EDIT_IMPORTPATH, m_strImportFilePath);
}
......@@ -50,11 +51,45 @@ BEGIN_MESSAGE_MAP(CDBOption, CDialogEx)
ON_BN_CLICKED(IDC_BUTTON_PREV, &CDBOption::OnButtonPrev)
ON_BN_CLICKED(IDC_BUTTON_WRITE, &CDBOption::OnButtonWrite)
ON_BN_CLICKED(IDC_BUTTON_DELETE, &CDBOption::OnButtonDelete)
ON_BN_CLICKED(IDC_BUTTON_CHANGE, &CDBOption::OnButtonChange)
ON_BN_CLICKED(IDC_BUTTON_LISTREAD, &CDBOption::OnButtonListread)
ON_BN_CLICKED(IDC_BUTTON_INPATH, &CDBOption::OnButtonInpath)
ON_BN_CLICKED(IDC_BUTTON_READFILE, &CDBOption::OnButtonReadfile)
END_MESSAGE_MAP()
// CDBOption 消息处理程序
BOOL CDBOption::InitInstance()
{
AfxOleInit();
return TRUE;
}
BOOL CDBOption::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 初始化列表控件
{
LONG lStyle = GetWindowLong(m_list.m_hWnd, GWL_STYLE);
lStyle &= ~LVS_TYPEMASK;
lStyle |= LVS_REPORT;
SetWindowLong(m_list.GetSafeHwnd(), GWL_STYLE, lStyle);
DWORD dwStyle = m_list.GetExtendedStyle();
dwStyle |= LVS_EX_FULLROWSELECT; // 选中行,整行高亮
dwStyle |= LVS_EX_GRIDLINES; // 网格线
m_list.SetExtendedStyle(dwStyle);
// 设置列,并设置大小
{
CRect rc;
m_list.GetClientRect(rc);
m_list.InsertColumn(EListIndexCode, _T("客户编号"), LVCFMT_LEFT, rc.Width() / EListIndexMaxLimit);
m_list.InsertColumn(EListIndexName, _T("姓名"), LVCFMT_LEFT, rc.Width() / EListIndexMaxLimit);
m_list.InsertColumn(EListIndexSex, _T("性别"), LVCFMT_LEFT, rc.Width() / EListIndexMaxLimit);
m_list.InsertColumn(EListIndexAge, _T("年龄"), LVCFMT_LEFT, rc.Width() / EListIndexMaxLimit);
}
}
return TRUE;
}
void CDBOption::OnBnClickedOk()
{
......@@ -62,7 +97,7 @@ void CDBOption::OnBnClickedOk()
CDialogEx::OnOK();
}
// 连接数据库
void CDBOption::OnButtonConnect()
{
// TODO: 在此添加控件通知处理程序代码
......@@ -73,6 +108,7 @@ void CDBOption::OnButtonConnect()
if (SUCCEEDED(hr)) //如果ADO实例创建成功
{
hr = m_pConnection->Open("driver={SQL Server};Server=御承扬;Database=TEST1;UID=pyc-ycy;PWD=789147;", "", "", adModeUnknown);
}
if (m_pConnection->State)
m_editLog.SetWindowText(L"数据库连接成功");
......@@ -82,11 +118,11 @@ void CDBOption::OnButtonConnect()
catch (_com_error e)
{
CString log;
log.Format(L"数据库连接失败!\r\n原因:%s", e.ErrorMessage());
log.Format(L"数据库连接失败!\r\n原因:%s\r\n", e.ErrorMessage(),e.Description());
MessageBox(log, L"提示", MB_ICONASTERISK);
}
}
// 显示记录
void CDBOption::GetRecordContent()
{
if (m_pRecordset == NULL) //记录集为NULL
......@@ -104,7 +140,7 @@ void CDBOption::GetRecordContent()
m_Age = (LPCTSTR)(_bstr_t)(vAge);
UpdateData(false);
}
//读取记录
void CDBOption::OnButtonRead()
{
// TODO: 在此添加控件通知处理程序代码
......@@ -119,7 +155,7 @@ void CDBOption::OnButtonRead()
GetRecordContent();
}
// 读取第一条记录
void CDBOption::OnButtonFirst()
{
// TODO: 在此添加控件通知处理程序代码
......@@ -129,7 +165,7 @@ void CDBOption::OnButtonFirst()
GetRecordContent();
}
// 读取最后一条记录
void CDBOption::OnButtonLast()
{
// TODO: 在此添加控件通知处理程序代码
......@@ -139,7 +175,7 @@ void CDBOption::OnButtonLast()
GetRecordContent();
}
// 读取下一条记录
void CDBOption::OnButtonNext()
{
// TODO: 在此添加控件通知处理程序代码
......@@ -154,7 +190,7 @@ void CDBOption::OnButtonNext()
GetRecordContent();
}
// 读取上一条记录
void CDBOption::OnButtonPrev()
{
// TODO: 在此添加控件通知处理程序代码
......@@ -169,7 +205,7 @@ void CDBOption::OnButtonPrev()
GetRecordContent();
}
//添加记录
void CDBOption::OnButtonWrite()
{
// TODO: 在此添加控件通知处理程序代码
......@@ -194,7 +230,7 @@ void CDBOption::OnButtonWrite()
}
}
// 删除记录
void CDBOption::OnButtonDelete()
{
// TODO: 在此添加控件通知处理程序代码
......@@ -235,11 +271,13 @@ void CDBOption::OnButtonDelete()
}
}
if (key)
if (key==true)
{
m_pRecordset->Delete(adAffectCurrent);
m_pRecordset->Update();
CString sql;
sql.Format(L"DELETE FROM Agent WHERE ID=%d",_ttoi(m_ID ));
m_pConnection->Execute(_bstr_t(sql), 0, adCmdText);
/*m_pRecordset->Delete(adAffectCurrent);
m_pRecordset->Update();*/
m_pRecordset->Requery(NULL);
GetRecordContent();
m_editLog.SetWindowText(L"删除成功");
......@@ -252,3 +290,200 @@ void CDBOption::OnButtonDelete()
MessageBox(log, L"提示", MB_ICONASTERISK);
}
}
// 修改数据记录
void CDBOption::OnButtonChange()
{
// TODO: 在此添加控件通知处理程序代码
bool key = false;
try
{
UpdateData(true);
_variant_t vID, vName, vSex, vAge;
m_pRecordset->Requery(NULL);
if (!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
while (true)
{
vID = m_pRecordset->GetCollect("ID");
if (m_ID == (LPCTSTR)(_bstr_t)(vID))
{
key = true;
break;
}
m_pRecordset->MoveNext();
if (m_pRecordset->adoEOF)
{
if (m_ID == (LPCTSTR)(_bstr_t)(vID))
{
key = true;
break;
}
else
{
MessageBox(L"該编号的客户并不存在\r\n无法进行修改\r\n请检查是否有误", L"提示", MB_ICONASTERISK);
break;
}
}
}
if (key == true)
{
UpdateData(true);
CString sql,sql1,sql2;
sql.Format(L"UPDATE Agent SET Agent_Name='"+ m_Name+L"' WHERE ID=%d", _ttoi(m_ID));
sql1.Format(L"UPDATE Agent SET Sex='%s' WHERE ID=%d", m_Sex, _ttoi(m_ID));
sql2.Format(L"UPDATE Agent SET Age=%d WHERE ID=%d", _ttoi(m_Age), _ttoi(m_ID));
m_pConnection->Execute(_bstr_t(sql), 0, adCmdText);
m_pConnection->Execute(_bstr_t(sql1), 0, adCmdText);
m_pConnection->Execute(_bstr_t(sql2), 0, adCmdText);
m_pRecordset->Requery(NULL);
m_pRecordset->MoveLast();
GetRecordContent();
m_editLog.SetWindowText(L"修改成功");
}
}
catch (_com_error e)
{
CString log;
log.Format(L"修改失败!\r\n原因:%s\r\n%s", e.ErrorMessage(), (LPCTSTR)e.Description());
MessageBox(log, L"提示", MB_ICONASTERISK);
}
}
void CDBOption::UpdateListData()
{
_variant_t vID, vName, vSex, vAge;
vID = m_pRecordset->GetCollect("ID");
vName = m_pRecordset->GetCollect("Agent_Name");
vSex = m_pRecordset->GetCollect("Sex");
vAge = m_pRecordset->GetCollect("Age");
CString ID, Name, Sex, Age;
ID = (LPCTSTR)(_bstr_t)(vID);
Name = (LPCTSTR)(_bstr_t)(vName);
Sex = (LPCTSTR)(_bstr_t)(vSex);
Age = (LPCTSTR)(_bstr_t)(vAge);
int index = m_list.GetItemCount();
m_list.InsertItem(index, ID);
m_list.SetItemText(index, EListIndexName, Name);
m_list.SetItemText(index, EListIndexSex, Sex);
m_list.SetItemText(index, EListIndexAge, Age);
}
void CDBOption::OnButtonListread()
{
// TODO: 在此添加控件通知处理程序代码
if (m_pRecordset == NULL)
{
MessageBox(L"记录集不存在\r\n请先执行读取操作", L"提示", MB_ICONASTERISK);
return;
}
try
{
if (!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
m_list.DeleteAllItems();
while (true)
{
UpdateListData();
m_pRecordset->MoveNext();
if (m_pRecordset->adoEOF)
{
break;
}
}
m_editLog.SetWindowText(L"读取成功,所有记录如表中所示!");
}
catch (_com_error e)
{
CString log;
log.Format(L"批量读取失败!\r\n原因:%s\r\n%s", e.ErrorMessage(), (LPCTSTR)e.Description());
MessageBox(log, L"提示", MB_ICONASTERISK);
}
}
void CDBOption::OnButtonInpath()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
/* 导入文件为 UTF8 无BOM 编码
格式是:
*/
using namespace std;
static CString strFilename = _T("");
static TCHAR szFilter[] = _T("文本l文件(*.xls)|*.xls|所有文件(*.*)|*.*||");
CFileDialog dlg(TRUE, // 创建文件打开对话框:FALSE保存对话框 
_T(".txt"),
strFilename.GetString(),
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
szFilter
);
if (IDOK != dlg.DoModal()) {
return;
}
// 显示选择的文件内容
m_strImportFilePath = dlg.GetPathName();
UpdateData(FALSE);
}
void CDBOption::OnButtonReadfile()
{
if (m_pConnection == NULL)
{
MessageBox(L"数据库未连接", L"提示", MB_ICONASTERISK);
return;
}
UpdateData(TRUE);
m_list.DeleteAllItems();
Excel excel;
bool bInit = excel.initExcel();
// CString 转 const char*
USES_CONVERSION;
std::string s(W2A(m_strImportFilePath));
const char* cstr = s.c_str();
bool bRect = excel.open(cstr); // 打开 Excel 文件
if (bRect == false)
{
m_editLog.SetWindowText(L"文件打开失败!");
return;
}
if (bRect == true)
{
CString strsheetName = excel.getSheetName(1); // 获取sheet名
bool bLoad = excel.loadSheet(strsheetName);
if (bLoad)
{
int nRow = excel.getRowCount(); // 获取sheet中的行数
int ID, Age;
CString Name, Sex;
for (int i = 2; i <= nRow; i++)
{
ID = excel.getCellInt(i, 1);
Name = excel.getCellString(i, 2);
Sex = excel.getCellString(i, 3);
Age = excel.getCellInt(i, 4);
CString strSql;
strSql.Format(L"INSERT INTO Agent(ID, Agent_Name, Sex, Age) VALUES(%d, '%s', '%s', %d)", ID, Name, Sex, Age);
try
{
m_pConnection->Execute(_bstr_t(strSql), 0, adCmdText);
m_editLog.SetWindowText(L"写入成功!");
}
catch (_com_error e)
{
MessageBox(e.Description());
return;
}
}
m_editLog.SetWindowText(L"导入成功!");
}
else
{
m_editLog.SetWindowText(L"导入失败!");
return;
}
}
}
......@@ -13,6 +13,7 @@ public:
virtual ~CDBOption();
BOOL InitInstance();
void GetRecordContent();
BOOL OnInitDialog();
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
......@@ -46,4 +47,19 @@ public:
afx_msg void OnButtonPrev();
afx_msg void OnButtonWrite();
afx_msg void OnButtonDelete();
};
afx_msg void OnButtonChange();
CListCtrl m_list;
enum {
EListIndexCode = 0,
EListIndexName,
EListIndexSex,
EListIndexAge,
EListIndexMaxLimit
};
afx_msg void OnButtonListread();
void UpdateListData();
// 获取导入路径的编辑框变量
CString m_strImportFilePath;
afx_msg void OnButtonInpath();
afx_msg void OnButtonReadfile();
};
此差异已折叠。
#pragma once
#include "CApplication.h"
#include "CRange.h"
#include "CWorkbook.h"
#include "CWorkbooks.h"
#include "CWorksheet.h"
#include "CWorksheets.h"
class Excel
{
private:
CString openFileName;
CWorkbook workBook;//当前处理文件
CWorkbooks books;//ExcelBook集合,多文件时使用
CWorksheet workSheet;//当前使用sheet
CWorksheets sheets;//Excel的sheet集合
CRange currentRange;//当前操作区域
bool isLoad;//是否已经加载了某个sheet数据
COleSafeArray safeArray;
protected:
static CApplication application;//Excel进程实例
public:
Excel();
virtual ~Excel();
void show(bool bShow);
//检查一个cell是否为字符串
bool isCellString(long iRow, long iColumn);
//检查一个cell是否为数值
bool isCellInt(long iRow, long iColumn);
//得到一个cell的string
CString getCellString(long iRow, long iColumn);
//得到一个cell的整数
int getCellInt(long iRow, long iColumn);
//得到一个cell的double数据
double getCellDouble(long iRow, long iColumn);
//取得行的总数
int getRowCount();
//取得列的整数
int getColumnCount();
//使用某个shell
bool loadSheet(long tableId, bool preLoaded = false);
bool loadSheet(CString sheet, bool preLoaded = false);
//通过序号取得某个shell的名称
CString getSheetName(long tableID);
//得到sheel的总数
int getSheetCount();
//打开excel文件
bool open(const char* fileName);
//关闭打开的excel文件
void close(bool ifSave = false);
//另存为一个excel文件
void saveAsXLSFile(const CString &xlsFile);
//取得打开文件的名称
CString getOpenFileName();
//取得打开sheel的名称
CString getOpenSheelName();
//向cell中写入一个int值
void setCellInt(long iRow, long iColumn, int newInt);
//向cell中写入一个字符串
void setCellString(long iRow, long iColumn, CString newString);
public:
//初始化 Excel_OLE
static bool initExcel();
//释放Excel_OLE
static void release();
//取得列的名称
static char* getColumnName(long iColumn);
protected:
void preLoadSheet();
};
\ No newline at end of file
B// Microsoft Visual C++ generated resource script.
......
......@@ -20,8 +20,14 @@
#define IDC_BUTTON_NEXT 1010
#define IDC_BUTTON_LAST 1011
#define IDC_BUTTON_WRITE 1012
#define IDC_BUTTON1 1013
#define IDC_BUTTON_DELETE 1013
#define IDC_BUTTON_CHANGE 1014
#define IDC_LIST1 1015
#define IDC_BUTTON_LISTREAD 1016
#define IDC_EDIT_IMPORTPATH 1017
#define IDC_BUTTON_INPATH 1018
#define IDC_BUTTON3 1019
#define IDC_BUTTON_READFILE 1019
#define ID_32771 32771
#define ID_DB_MENU 32772
#define ID_ 32773
......@@ -32,7 +38,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 312
#define _APS_NEXT_COMMAND_VALUE 32774
#define _APS_NEXT_CONTROL_VALUE 1014
#define _APS_NEXT_CONTROL_VALUE 1020
#define _APS_NEXT_SYMED_VALUE 310
#endif
#endif
......@@ -184,8 +184,15 @@
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="CApplication.h" />
<ClInclude Include="ChildFrm.h" />
<ClInclude Include="CRange.h" />
<ClInclude Include="CWorkbook.h" />
<ClInclude Include="CWorkbooks.h" />
<ClInclude Include="CWorksheet.h" />
<ClInclude Include="CWorksheets.h" />
<ClInclude Include="DBOption.h" />
<ClInclude Include="Excel.h" />
<ClInclude Include="MainFrm.h" />
<ClInclude Include="Resource.h" />
<ClInclude Include="stdafx.h" />
......@@ -197,6 +204,7 @@
<ItemGroup>
<ClCompile Include="ChildFrm.cpp" />
<ClCompile Include="DBOption.cpp" />
<ClCompile Include="Excel.cpp" />
<ClCompile Include="MainFrm.cpp" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册