gpt4 book ai didi

c++ - 当我在 MFC(CButton) 中按下按钮时,不会实时更改值。我正在使用 sql server

转载 作者:太空宇宙 更新时间:2023-11-04 13:08:46 25 4
gpt4 key购买 nike

我使用的是 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();
}

和程序图片
enter image description here

编辑: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:我说刷新按钮 enter image description here

最佳答案

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

关于c++ - 当我在 MFC(CButton) 中按下按钮时,不会实时更改值。我正在使用 sql server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40906156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com