Malo si nejasan sto se tice onoga sto zelis sa bazom ali evo ti:
znaci u accesu napravi bazu tabele i queryije koji su ti potrebni i onda ces u svoj aplikaciji izvesti klasu, za svaki query i tabelu koju zelis, iz klase CRecordSet:
Code:
// code generated on 15. januar 2005, 22:36
class CFirmeSet : public CRecordset
{
public:
CFirmeSet(CDatabase* pDatabase = NULL);
DECLARE_DYNAMIC(CFirmeSet)
// Field/Param Data
// The string types below (if present) reflect the actual data type of the
// database field - CStringA for ANSI datatypes and CStringW for Unicode
// datatypes. This is to prevent the ODBC driver from performing potentially
// unnecessary conversions. If you wish, you may change these members to
// CString types and the ODBC driver will perform all necessary conversions.
// (Note: You must use an ODBC driver version that is version 3.5 or greater
// to support both Unicode and these conversions).
long m_ID;
long m_FirmaID;
CStringW m_NazivFirme;
CStringW m_Tel;
CStringW m_Fax;
CStringW m_DelatnostID;
CStringW m_Delatnost;
CStringW m_Ziro;
CStringW m_Adresa;
CStringW m_MatBroj;
CStringW m_PIB;
double m_Rabat;
BOOL m_Aktivan;
// Overrides
// Wizard generated virtual function overrides
public:
virtual CString GetDefaultConnect(); // Default connection string
virtual CString GetDefaultSQL(); // default SQL for Recordset
virtual void DoFieldExchange(CFieldExchange* pFX); // RFX support
// Implementation
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
};
kao sto vidis za svaku kolonu tabele dobijas po jednu promenljivu,
zatim napravis famozni dialog i u njega ubacis ListCtrl u kome ces da izlistas
sadrzaj svoje tabele, ovde sam radio sa samo jednom kolonom ali isti rad je i za
recimo deset kolona(ovde je samo izlistano ime firme, a moglo je i adresa,tel itd.)
Code:
// CFirmaListaDlg dialog
#pragma once
#include "afxcmn.h"
#include "FirmeSet.h"
class CFirmaListaDlg : public CDialog
{
DECLARE_DYNAMIC(CFirmaListaDlg)
public:
CFirmaListaDlg(CWnd* pParent = NULL); // standard constructor
virtual ~CFirmaListaDlg();
// Dialog Data
enum { IDD = IDD_FIRMALISTADLG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
DECLARE_MESSAGE_MAP()
public:
CFirmeSet m_set;
afx_msg void OnBnClickedButton2();
virtual BOOL OnInitDialog();
CListCtrl m_list;
void UpdateList(void);
afx_msg void OnBnClickedButton1();
afx_msg void OnHdnItemdblclickList1(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnBnClickedButton3();
protected:
virtual void OnOK();
public:
afx_msg void OnClose();
protected:
virtual void OnCancel();
};
Code:
//cpp fajl CFirmaListaDlg dialog
BOOL CFirmaListaDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_list.InsertColumn(0,"Naziv firme",LVCFMT_LEFT,300);
UpdateList();
m_list.SetItemState(0, LVIS_FOCUSED|LVIS_SELECTED, LVIS_FOCUSED|LVIS_SELECTED);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CFirmaListaDlg::UpdateList(void)
{
m_list.DeleteAllItems();
//CFirmeSet set;
m_set.m_strFilter=_T("[Aktivan]");
m_set.m_strSort="";
// set.m_strSort=_T("NazivFirme");
m_set.Open();
//m_set.Requery();
CString str;
for(int i=0;!m_set.IsEOF();i++,m_set.MoveNext())
{
str=m_set.m_NazivFirme;
m_list.InsertItem(i,str);
m_list.SetItemData(i,(DWORD)m_set.m_FirmaID);
}
m_set.Close();
}
init dialog se poziva pri inizijalizaciji(to radi framework), tu sam ubacio samo jednu kolonu u listctrl
a mogo sam i jos isti rad, tu se poziva funkcija UpdateList kaja cita bazu tj. tabelu
ili query i puni ListCtrl, tu vidis
glavne komande za CRecordSet Open,MoveNext i Close,
za editovanje koristis kombinaciju:
Code:
BOOL CFirmaListDlg::EditFirmaNaziv(long nFirmaID,const CString& strNovNaziv)
{
// e sad mozes na vise nacina da naces slog nFirmaID koji zelis da promenis ovo je najidiotskiji
m_set.m_strFilter="";
m_set.m_strSort="";
m_set.Open();
for(;!m_set.IsEOF();m_set.MoveNext())
{
if(nFirmaID == m_set.m_FirmaID)
{
// to je taj slog koji zelis da promenis
m_set.Edit();
m_set.m_NazivFirme=strNovNaziv;//menjas vrednost(i) koje zelis
m_set.Update();// updatujes bazu- obavezno
m_set.Close();// zatvaras- obavezno
retun TRUE;// uspesno zavrsio i izlazi
}
}
m_set.Close();
return FALSE;
}
znaci nema nista samo od sebe,vec sve moras da uradis sam. Ovo imas sve detaljno objasnjeno u msdn-u i imas uradjene lepe primere za rad sa odbc bazama. A za osnovne stvari imas i tutorial, a ako nemas MSDN onda dzaba ti VS.