C++ 当我按下MFC中的按钮(CButton)时,不会实时更改值。I';我使用sql server
我正在使用sql server 2014和visual studio 2015社区 我正在从事MFCDB程序(单文档和OLE DB),但遇到了很大的麻烦 问题是当我更改MFC按钮使用的DB值时,该值不会实时更改C++ 当我按下MFC中的按钮(CButton)时,不会实时更改值。I';我使用sql server,c++,mfc,oledb,listcontrol,C++,Mfc,Oledb,Listcontrol,我正在使用sql server 2014和visual studio 2015社区 我正在从事MFCDB程序(单文档和OLE DB),但遇到了很大的麻烦 问题是当我更改MFC按钮使用的DB值时,该值不会实时更改 当我按下编辑器中的刷新按钮时,更改值 如何实时更改值 下面是代码和图片 更新按钮代码 void CTouhouJGSView::OnBnClickedButtonUpdate() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. CCommand&
当我按下编辑器中的刷新按钮时,更改值
如何实时更改值 下面是代码和图片 更新按钮代码
void CTouhouJGSView::OnBnClickedButtonUpdate()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
CCommand<CDynamicAccessor> cmd;
CString strQuery = _T("UPDATE dbo.TouhouTable SET 능력 = 'ewrer' WHERE id = 1");
cmd.Open(m_pSet->m_session, strQuery, NULL);
cmd.Close();
AddAllRecord();
}
和程序图片编辑:m_pSet的定义
#pragma once
#include "afxcmn.h"
#include "afxwin.h"
class CTouhouJGSSet;
class CTouhouJGSView : public COleDBRecordView
{
protected: // serialization에서만 만들어집니다.
CTouhouJGSView();
DECLARE_DYNCREATE(CTouhouJGSView)
public:
#ifdef AFX_DESIGN_TIME
enum{ IDD = IDD_TOUHOUJGS_FORM };
#endif
CTouhouJGSSet* m_pSet; //here
// 특성입니다.
public:
CTouhouJGSDoc* GetDocument() const;
编辑2:CTouhouJGSSet更改部件类
//class CTouhouJGSSet : public CTable<CAccessor<CTouhouJGSSetAccessor> >
class CTouhouJGSSet : public CCommand<CAccessor<CTouhouJGSSetAccessor> >
{
......
HRESULT OpenRowset(DBPROPSET *pPropSet = NULL)
{
//HRESULT hr = Open(m_session, L"dbo.TouhouTable", pPropSet);
CString strSQL = _T("select * from dbo.TouhouTable");
HRESULT hr = Open(m_session, strSQL, pPropSet);
编辑3:我说刷新按钮
找到
m\u pSet
充满数据的方法。您必须在AddAllRecord()之前刷新或重新创建它代码>
void CTouhouJGSView::OnBnClickedButtonUpdate()
{
//待办事项:여기에 컨트롤 알림 처리기 코드를 추가합니다.
命令cmd;
CString strQuery=\u T(“更新dbo.TouhouTable集능력 = 'ewrer'其中id=1”);
cmd.Open(m_pSet->m_session,strQuery,NULL);
cmd.Close();
cmd.OpenRowset(m_pSet);//找到m_pSet
填充数据的方法。在AddAllRecord();
void CTouhouJGSView::OnBnClickedButtonUpdate()
{
//待办事项:여기에 컨트롤 알림 처리기 코드를 추가합니다.
命令cmd;
CString strQuery=\u T(“更新dbo.TouhouTable集능력 = 'ewrer'其中id=1”);
cmd.Open(m_pSet->m_session,strQuery,NULL);
cmd.Close();
cmd.OpenRowset(m_pSet);//显示m_pSet
对象的定义,如MS文档所述,m_pSet
对象似乎没有刷新。显示其初始化和填充DB数据的方式。重新创建对象并填充数据应该会有所帮助。使用按钮(更新?)更改值,在按下刷新按钮之前,您不会看到该值已更改?刷新按钮在哪里?我上载了刷新按钮图像,当我第一次调试时,列表控件不会向我显示已更改的值,但第二个调试列表控件会将已更改的值显示为Meth。这是Microsoft Sql Server管理网格。它不会在每次更改值时都刷新ged。一切似乎都正常。显示m_pSet
对象的定义m_pSet
对象似乎没有按照MS文档所述刷新。显示其初始化方式并填充DB数据。重新创建对象并填充数据应该会有所帮助。您可以使用按钮(更新?)更改值,在按下刷新按钮之前,您不会看到该值已更改?刷新按钮在哪里?我上载了刷新按钮图像,当我第一次调试时,列表控件不会向我显示已更改的值,但第二个调试列表控件会将已更改的值显示为Meth。这是Microsoft Sql Server管理网格。它不会在每次更改值时都刷新杰德,一切似乎都很好。
//class CTouhouJGSSet : public CTable<CAccessor<CTouhouJGSSetAccessor> >
class CTouhouJGSSet : public CCommand<CAccessor<CTouhouJGSSetAccessor> >
{
......
HRESULT OpenRowset(DBPROPSET *pPropSet = NULL)
{
//HRESULT hr = Open(m_session, L"dbo.TouhouTable", pPropSet);
CString strSQL = _T("select * from dbo.TouhouTable");
HRESULT hr = Open(m_session, strSQL, pPropSet);
void CTouhouJGSView::OnInitialUpdate()
{
,,,,,
COleDBRecordView::OnInitialUpdate();
AddColumn(); //additional function
AddAllRecord(); //additional function
}
void CTouhouJGSView::OnBnClickedButtonUpdate()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
CCommand<CDynamicAccessor> cmd;
CString strQuery = _T("UPDATE dbo.TouhouTable SET 능력 = 'ewrer' WHERE id = 1");
cmd.Open(m_pSet->m_session, strQuery, NULL);
cmd.Close();
cmd.OpenRowset(m_pSet); //<-- you can try to close it first, if its already opened
AddAllRecord();
}