home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1996 February / PCWK0296.iso / po7_win / object10 / vsdepvw.cpp < prev    next >
C/C++ Source or Header  |  1994-11-20  |  9KB  |  340 lines

  1. // vsdepvw.cpp : implementation of the CVsdept2View class
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "vsdept2.h"
  6.  
  7. #include "vsdepdoc.h"
  8. #include "vsdepvw.h"
  9.  
  10. #ifndef ORACL_ORACLE
  11. #include "oracl.h"
  12. #endif
  13.  
  14. #ifndef OMFC_ORACLE
  15. #include "omfc.h"
  16. #endif
  17.  
  18. #ifdef _DEBUG
  19. #undef THIS_FILE
  20. static char BASED_CODE THIS_FILE[] = __FILE__;
  21. #endif
  22.  
  23. /////////////////////////////////////////////////////////////////////////////
  24. // CVsdept2View
  25.  
  26. IMPLEMENT_DYNCREATE(CVsdept2View, CFormView)
  27.  
  28. BEGIN_MESSAGE_MAP(CVsdept2View, CFormView)
  29.         //{{AFX_MSG_MAP(CVsdept2View)
  30.         ON_BN_CLICKED(IDC_DBCONNECT, OnDbconnect)
  31.         ON_BN_CLICKED(IDC_MFIRST, OnMfirst)
  32.         ON_BN_CLICKED(IDC_MLAST, OnMlast)
  33.         ON_BN_CLICKED(IDC_MNEXT, OnMnext)
  34.         ON_BN_CLICKED(IDC_MPREV, OnMprev)
  35.         ON_BN_CLICKED(IDC_BOOKMARK, OnBookmark)
  36.         ON_BN_CLICKED(IDC_TOMARK, OnTomark)
  37.         ON_BN_CLICKED(IDC_ADDNEW, OnAddnew)
  38.         ON_BN_CLICKED(IDC_DELETE, OnDelete)
  39.         ON_BN_CLICKED(IDC_COMMIT, OnCommit)
  40.         ON_BN_CLICKED(IDC_ROLLBACK, OnRollback)
  41.         //}}AFX_MSG_MAP
  42. END_MESSAGE_MAP()
  43.  
  44. /////////////////////////////////////////////////////////////////////////////
  45. // CVsdept2View construction/destruction
  46.  
  47. CVsdept2View::CVsdept2View()
  48.         : CFormView(CVsdept2View::IDD)
  49. {
  50.         //{{AFX_DATA_INIT(CVsdept2View)
  51.         //}}AFX_DATA_INIT
  52.         // TODO: add construction code here
  53.  
  54.         m_havedata = FALSE; // no data yet
  55.         return;
  56. }
  57.  
  58. CVsdept2View::~CVsdept2View()
  59. {
  60. ;
  61. }
  62.  
  63. void CVsdept2View::DoDataExchange(CDataExchange* pDX)
  64. {
  65.         CFormView::DoDataExchange(pDX);
  66.         //{{AFX_DATA_MAP(CVsdept2View)
  67.         //}}AFX_DATA_MAP
  68. }
  69.  
  70. /////////////////////////////////////////////////////////////////////////////
  71. // CVsdept2View diagnostics
  72.  
  73. #ifdef _DEBUG
  74. void CVsdept2View::AssertValid() const
  75. {
  76.         CFormView::AssertValid();
  77. }
  78.  
  79. void CVsdept2View::Dump(CDumpContext& dc) const
  80. {
  81.         CFormView::Dump(dc);
  82. }
  83.  
  84. CVsdept2Doc* CVsdept2View::GetDocument() // non-debug version is inline
  85. {
  86.         ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CVsdept2Doc)));
  87.         return (CVsdept2Doc*)m_pDocument;
  88. }
  89. #endif //_DEBUG
  90.  
  91. /////////////////////////////////////////////////////////////////////////////
  92. // CVsdept2View message handlers
  93.  
  94. void CVsdept2View::OnDbconnect()
  95. {
  96.         CString db;
  97.         CString conn;
  98.  
  99.         GetDlgItem(IDC_DATABASE)->GetWindowText(db);
  100.         GetDlgItem(IDC_CONNECT)->GetWindowText(conn);
  101.  
  102.         // open a database object
  103.     m_database.Open((const char *) db, (const char *) conn, 0);
  104.  
  105.     // set up for employees
  106.  
  107.     // set up the block on the employee dynaset
  108.     m_empbinder.Open(m_database, "select ename, empno, mgr, sal, hiredate, deptno, vacation, hobby, comm from emp2");
  109.     m_dynaset_emp = m_empbinder.GetDynaset();
  110.     m_empbinder.SetDept(&m_deptbinder, &m_database);
  111.  
  112.     // we also want a session object
  113.     m_session = m_dynaset_emp.GetSession();
  114.     m_session.BeginTransaction();   // sql*plus transactional model
  115.  
  116.     // if (!err.oleerr)
  117.         m_havedata = TRUE;
  118.  
  119.  
  120.     // attach bound textedits to block
  121.     m_ename.BindToBinder(&m_empbinder, "ename");
  122.     m_sal.BindToBinder(&m_empbinder, "sal");
  123.     m_mgr.BindToBinder(&m_empbinder, "mgr");
  124.     m_hiredate.BindToBinder(&m_empbinder, "hiredate");
  125.  
  126.     // static, checkbox
  127.     m_static.BindToBinder(&m_empbinder, "ename");
  128.     m_checkbox1.BindToBinder(&m_empbinder, "vacation");
  129.     m_checkbox2.BindToBinder(&m_empbinder, "vacation");
  130.  
  131.     // sliders
  132.     m_sliderw.BindToBinder(&m_empbinder, "comm");
  133.     m_sliderr.BindToBinder(&m_empbinder, "comm");
  134.  
  135.     // group butons
  136.     m_groupbuttonh.BindToBinder(&m_empbinder, "hobby");
  137.     m_empbinder.Refresh();  // give all objects their values
  138.  
  139.     // set up for department
  140.     m_deptbinder.Open(m_database, 0);  // we only set the database now
  141.  
  142.     m_dname.BindToBinder(&m_deptbinder, "dname");
  143.     m_deptno.BindToBinder(&m_deptbinder, "deptno");
  144.     m_dloc.BindToBinder(&m_deptbinder, "loc");
  145.  
  146.     // group buttons
  147.     m_groupbuttonl.BindToBinder(&m_deptbinder, "loc");
  148.  
  149.     m_empbinder.PostMove();  // to get the department block refreshed
  150.  
  151.     return;
  152. }
  153.  
  154. void CVsdept2View::OnMfirst()
  155. {
  156.         m_empbinder.MoveFirst();
  157.     return;
  158. }
  159.  
  160. void CVsdept2View::OnMlast()
  161. {
  162.         m_empbinder.MoveLast();
  163.     return;
  164. }
  165.  
  166. void CVsdept2View::OnMnext()
  167. {
  168.         m_empbinder.MoveNext();
  169.  
  170.     return;
  171. }
  172.  
  173. void CVsdept2View::OnMprev()
  174. {
  175.         m_empbinder.MovePrev();
  176.     return;
  177. }
  178.  
  179. void CVsdept2View::OnBookmark()
  180. {
  181.     m_mark = m_dynaset_emp.GetMark();
  182.         return;
  183. }
  184.  
  185. void CVsdept2View::OnTomark()
  186. {
  187.     m_dynaset_emp.MoveToMark(m_mark);
  188.     return;
  189. }
  190.  
  191. //------------------
  192. oresult OBinderEmp::PostMove(void)
  193. {
  194.     // refresh the dept block
  195.     CString sqls = "select * from dept where deptno = ";
  196.     OValue deptno;
  197.  
  198.     GetDynaset().GetFieldValue("deptno", &deptno);
  199.     const char *cp = (const char *) deptno;
  200.     //sqls += (const char *) deptno;
  201.     sqls += cp;
  202.  
  203.     m_deptbinder->SetSQL((const char *) sqls );
  204.     m_deptbinder->RefreshQuery();
  205.  
  206.     return(OSUCCESS);
  207. }
  208.  
  209. static long myempno = 6001;
  210.  
  211. oresult OBinderEmp::PostAdd(void)
  212. {
  213.     // set values for empno and deptno
  214.     OValue var = 50L;
  215.     ODynaset dyn = GetDynaset();
  216.     dyn.SetFieldValue("deptno", var);
  217.     var = myempno++;
  218.     dyn.SetFieldValue("empno", var);
  219.  
  220.     return(OSUCCESS);
  221. }
  222.  
  223. void CVsdept2View::OnAddnew()
  224. {
  225.         m_empbinder.AddNewRecord();
  226.  
  227. }
  228.  
  229. void CVsdept2View::OnDelete()
  230. {
  231.         m_empbinder.DeleteRecord();
  232.  
  233.     return;
  234. }
  235.  
  236. void CVsdept2View::OnCommit()
  237. {
  238.         m_session.Commit(TRUE);
  239.     return;
  240. }
  241.  
  242. void CVsdept2View::OnRollback()
  243. {
  244.         m_session.Rollback(TRUE);
  245.     return;
  246. }
  247.  
  248. // jdday
  249. void CVsdept2View::OnInitialUpdate()
  250. {
  251.  
  252.     // TODO: Add your specialized creation code here
  253.     // set up ename and sal bound textedits
  254.     m_ename.BindToControl(this, IDC_ENAME);
  255.     m_ename.SetProperty(OBOUND_READONLY);
  256.     
  257.     m_sal.BindToControl(this, IDC_ESAL);
  258.     
  259.     m_mgr.BindToControl(this, IDC_EMGR);
  260.     
  261.     m_hiredate.BindToControl(this, IDC_EHIREDATE);
  262.  
  263.     // set up for department
  264.     m_dname.BindToControl(this, IDC_DNAME);
  265.     m_dname.SetProperty(OBOUND_READONLY);
  266.     
  267.     m_deptno.BindToControl(this, IDC_DEPTNO);
  268.     m_deptno.SetProperty(OBOUND_READONLY);
  269.     
  270.     m_dloc.BindToControl(this, IDC_DLOC);
  271.     m_dloc.SetProperty(OBOUND_READONLY);
  272.  
  273.     // set up staic bound control
  274.     m_static.BindToControl(this, IDC_STATICBOUND);
  275.  
  276.     // set up checkbox bound control
  277.     OValue onvalue((int)1);
  278.     OValue offvalue((int)0);
  279.  
  280.     m_checkbox1.BindToControl(this, IDC_CHECKBOX1);
  281.     m_checkbox1.SetProperty(onvalue, offvalue);
  282.     
  283.     m_checkbox2.BindToControl(this, IDC_CHECKBOX2);
  284.     m_checkbox2.SetProperty(onvalue, offvalue, OBOUND_READONLY);
  285.  
  286.     // set up groupbutton (readwrite)
  287.     OValue hvalue1((const char*)"Fishing");
  288.     OValue hvalue2((const char*)"Swimming");
  289.     OValue hvalue3((const char*)"Windsurfing");
  290.     OValue hvalue4((const char*)"Shopping");
  291.     OValue hvalue5((const char*)"Bowling");
  292.  
  293.     m_groupbuttonh.BindToControl(this, IDC_HRADIO1);
  294.     m_groupbuttonh.SetProperty(IDC_HRADIO1, hvalue1);
  295.     
  296.     m_groupbuttonh.BindToControl(this, IDC_HRADIO2);
  297.     m_groupbuttonh.SetProperty(IDC_HRADIO2, hvalue2);
  298.     
  299.     m_groupbuttonh.BindToControl(this, IDC_HRADIO3);
  300.     m_groupbuttonh.SetProperty(IDC_HRADIO3, hvalue3);
  301.     
  302.     m_groupbuttonh.BindToControl(this, IDC_HRADIO4);
  303.     m_groupbuttonh.SetProperty(IDC_HRADIO4, hvalue4);
  304.     
  305.     m_groupbuttonh.BindToControl(this, IDC_HRADIO5);
  306.     m_groupbuttonh.SetProperty(IDC_HRADIO5, hvalue5);
  307.  
  308.     // set up groupbutton (readonly)
  309.     OValue value1((const char*)"NEW YORK");
  310.     OValue value2((const char*)"DALLAS");
  311.     OValue value3((const char*)"CHICAGO");
  312.     OValue value4((const char*)"BOSTON");
  313.  
  314.     m_groupbuttonl.BindToControl(this, IDC_RADIO1);
  315.     m_groupbuttonl.SetProperty(IDC_RADIO1, value1, OBOUND_READONLY);  // the first radio button always
  316.                                                                       // decides readwrite/readonly
  317.     m_groupbuttonl.BindToControl(this, IDC_RADIO2);
  318.     m_groupbuttonl.SetProperty(IDC_RADIO2, value2);
  319.     
  320.     m_groupbuttonl.BindToControl(this, IDC_RADIO3);
  321.     m_groupbuttonl.SetProperty(IDC_RADIO3, value3);
  322.     
  323.     m_groupbuttonl.BindToControl(this, IDC_RADIO4);
  324.     m_groupbuttonl.SetProperty(IDC_RADIO4, value4);   
  325.                                                                       
  326.     // set up slider (readwrite)
  327.     OValue minvalue1((int)0);
  328.     OValue maxvalue1((int)2000);
  329.     m_sliderw.BindToControl(this, IDC_SCROLLBARW, IDC_SSTATICW);
  330.     m_sliderw.SetProperty(minvalue1, maxvalue1);
  331.     
  332.     // set up slider (readonly)
  333.     OValue minvalue2((int)0);
  334.     OValue maxvalue2((int)2000);
  335.     m_sliderr.BindToControl(this, IDC_SCROLLBARR, IDC_SSTATICR);
  336.     m_sliderr.SetProperty(minvalue2, maxvalue2, OBOUND_READONLY);
  337.     
  338. }
  339.  
  340.