SELECTTABLE.CPP
上传用户:sygkzy
上传日期:2013-03-13
资源大小:150k
文件大小:3k
源码类别:

Oracle数据库

开发平台:

Visual C++

  1. // SelectTable.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "ole_database.h"
  5. #include "SelectTable.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CSelectTable dialog
  13. CSelectTable::CSelectTable(CWnd* pParent /*=NULL*/)
  14. : CDialog(CSelectTable::IDD, pParent)
  15. {
  16. //{{AFX_DATA_INIT(CSelectTable)
  17. // NOTE: the ClassWizard will add member initialization here
  18. //}}AFX_DATA_INIT
  19. }
  20. void CSelectTable::DoDataExchange(CDataExchange* pDX)
  21. {
  22. CDialog::DoDataExchange(pDX);
  23. //{{AFX_DATA_MAP(CSelectTable)
  24. // NOTE: the ClassWizard will add DDX and DDV calls here
  25. //}}AFX_DATA_MAP
  26. }
  27. BEGIN_MESSAGE_MAP(CSelectTable, CDialog)
  28. //{{AFX_MSG_MAP(CSelectTable)
  29. ON_LBN_SELCHANGE(IDC_TABLE, OnSelchangeTable)
  30. ON_EN_CHANGE(IDC_TABLENAME, OnChangeTablename)
  31. //}}AFX_MSG_MAP
  32. END_MESSAGE_MAP()
  33. /////////////////////////////////////////////////////////////////////////////
  34. // CSelectTable message handlers
  35. BOOL CSelectTable::OnInitDialog() 
  36. {
  37. CDialog::OnInitDialog();
  38. OValue ovalue;
  39. CListBox *m_listbox=(CListBox*)GetDlgItem(IDC_TABLE);
  40. odyn.Open(odb," select table_name from user_tables");
  41. while(!odyn.IsEOF())
  42. {
  43. odyn.GetFieldValue("table_name",&ovalue);
  44. m_listbox->AddString(&(*ovalue));
  45. odyn.MoveNext(); 
  46. }
  47. return TRUE;  // return TRUE unless you set the focus to a control
  48.               // EXCEPTION: OCX Property Pages should return FALSE
  49. }
  50. CString CSelectTable::GetSql(CString m_tablename)
  51. {
  52. CString m_tmp,m_tmp2=" ";
  53. OValue ovalue;
  54. m_tmp="select column_name from user_tab_columns where table_name='"+m_tablename+"'";
  55. m_tablename=" ";
  56. odyn.Open(odb,m_tmp);
  57. while(!odyn.IsEOF())
  58. {
  59. odyn.GetFieldValue("column_name",&ovalue);
  60. m_tablename=m_tablename+m_tmp2+&(*ovalue);
  61. m_tmp2=" , ";
  62. odyn.MoveNext(); 
  63. }
  64. return m_tablename;
  65. }
  66. void CSelectTable::OnOK() 
  67. {
  68. CString m_tablename,m_tmp;
  69. CEdit *m_edit=(CEdit*)GetDlgItem(IDC_TABLENAME);
  70. CListBox *m_listbox=(CListBox*)GetDlgItem(IDC_TABLE);
  71. if(m_listbox->GetCurSel()>0)
  72. {
  73. m_listbox->GetText(m_listbox->GetCurSel(),m_tmp);
  74. m_edit->SetWindowText(m_tmp);
  75. }
  76. m_edit->GetWindowText(m_tablename);
  77. if(m_tablename.IsEmpty())
  78. {
  79. this->MessageBox("请选择表","提示",MB_OK);
  80. return;
  81. }
  82. m_sSql="SELECT"+GetSql(m_tablename)+" FROM "+m_tablename;
  83. CDialog::OnOK();
  84. }
  85. void CSelectTable::OnSelchangeTable() 
  86. {
  87. CString m_tmp;
  88. CEdit *m_edit=(CEdit*)GetDlgItem(IDC_TABLENAME);
  89. CListBox *m_listbox=(CListBox*)GetDlgItem(IDC_TABLE);
  90. if(m_listbox->GetCurSel()>0)
  91. {
  92. m_listbox->GetText(m_listbox->GetCurSel(),m_tmp);
  93. m_edit->SetWindowText(m_tmp);
  94. }
  95. }
  96. void CSelectTable::OnChangeTablename() 
  97. {
  98. // TODO: If this is a RICHEDIT control, the control will not
  99. // send this notification unless you override the CDialog::OnInitDialog()
  100. // function and call CRichEditCtrl().SetEventMask()
  101. // with the ENM_CHANGE flag ORed into the mask.
  102. CString m_tmp;
  103. int m_i;
  104. CEdit *m_edit=(CEdit*)GetDlgItem(IDC_TABLENAME);
  105. CListBox *m_listbox=(CListBox*)GetDlgItem(IDC_TABLE);
  106. m_edit->GetWindowText(m_tmp);
  107. m_i=m_listbox->FindString(0,m_tmp);
  108. if(m_i>0)
  109. m_listbox->SetCurSel(m_i);
  110. }