1

我正在使用 sql server 2014 和 Visual Studio 2015 社区我在 MFC DB 程序(单个文档和 OLE DB)上工作,但遇到了大麻烦


问题是当我在编辑器中按下刷新按钮时,当我通过 MFC 按钮更改使用中的 DB 值时,值不会实时更改,更改值
如何实时更改值?

下面是代码和图片

更新按钮代码

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();
}

AddAllRecord() 函数

void CTouhouJGSView::AddAllRecord()
{
    CString strTemp = _T("");

    m_pSet->MoveFirst();
    m_List.DeleteAllItems();
    int i = 0;
    do {
        strTemp.Format(_T("%4d"), m_pSet->m_Id);
        m_List.InsertItem(i, strTemp, 0);
        m_List.SetItemText(i, 1, m_pSet->m_section);
        m_List.SetItemText(i, 2, m_pSet->m_name);
        m_List.SetItemText(i, 3, m_pSet->m_title);
        m_List.SetItemText(i, 4, m_pSet->m_species);
        m_List.SetItemText(i, 5, m_pSet->m_living);
        m_List.SetItemText(i, 6, m_pSet->m_spell);
        i++;
    } while (m_pSet->MoveNext() == S_OK);

    m_pSet->MoveFirst();
}

和程序图片
在此处输入图像描述

编辑: 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;

EDIT2: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);

和 OnInitialUpdate() 函数

void CTouhouJGSView::OnInitialUpdate()
{
,,,,,
    COleDBRecordView::OnInitialUpdate();
    AddColumn();       //additional function
    AddAllRecord();    //additional function
}

编辑 3:我说刷新按钮 在此处输入图像描述

4

1 回答 1

0

寻找m_pSet充满数据的方式。您必须先刷新或重新创建AddAllRecord();

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();
}
于 2016-12-01T15:23:52.857 回答