CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

讨论一下,为什么强大的vc连vfp都不如?郁闷ing

楼主elian(elian)2005-05-11 19:23:23 在 VC/MFC / 基础类 提问

以前单位有个vfp程序实现两个功能:excel文本通过程序点个按钮就可以直接导入数据库,然后根据数据库的内容选出相关的自带生成一张单子,最后把数据库的记录一条条取出来,打印出一个个单子.为什么这样的程序要改成vc的,却那么难?想到现在,请教到现在还没有头绪.小弟没学过vfp,大概初看了一下,他excel导入access就用了一条语句,然后打印也是.可是vc好像要实现这样的功能是难上加难.虽然说各有所长,但这样的功能并不复杂,求救各位大吓,否则真对vc失去信心了. 问题点数:100、回复次数:17Top

1 楼42252343(大跃进的猪)回复于 2005-05-11 19:26:13 得分 0

不是没VFP功能强大   是实现起来没VF方便Top

2 楼steedhorse(晨星)回复于 2005-05-11 19:29:49 得分 20

“这样的功能并不复杂”?你用C语言做一个试试看哦。:)  
  其实如果不定义从什么抽象层次开始编程的话,比较难易一点意义都没有。  
  再比如:使用Word做一幅艺术字易如反掌,但用VC从头做起的确很难?那是不是做艺术字很简单,不,微软的程序员开发Word的这项功能应该也花了不少时间。Top

3 楼wshcdr(dd)回复于 2005-05-11 22:21:39 得分 0

晨星的话大有道理啊  
   
  各个开发工具应用侧重点不同,所以用VC去开发数据库的东西,会比较累。Top

4 楼huyoo(空格键)回复于 2005-05-11 22:35:59 得分 0

说不定VFP就是用VC开发的~Top

5 楼krh2001(边城浪子)回复于 2005-05-11 22:47:27 得分 20

Visual   Stdio   里的东东   基本上都是用   VC   开发的,   包括   VC本身(自己开发自己)Top

6 楼EDNecromancer()回复于 2005-05-11 23:24:03 得分 0

vc开发数据库的东西比较累,那VC最适合开发什么东西呢?Top

7 楼qrlvls( 空 气 )回复于 2005-05-11 23:43:20 得分 50

呵呵,正好我最近也正在帮老婆写两个用VC操作VFP数据库的代码  
  数据库操作非常简单,打印部分可以找现成的报表组件  
  CVFPDatabase::CVFPDatabase()  
  {  
  m_bDatabaseOpened =   FALSE;  
  }  
   
  CVFPDatabase::~CVFPDatabase()  
  {  
  CloseDatabase();  
  }  
   
  //-------------------------------------------------------------------------------  
  // 描 述: 打开指定的   DBC   数据库  
  //-------------------------------------------------------------------------------  
  BOOL   CVFPDatabase::OpenDatabase(CString   strDBPath)  
  {  
  CString strConnectionString;  
   
  try  
  {  
  CloseDatabase();  
   
  m_pConnection.CreateInstance(_T("ADODB.Connection"));  
  //   根据连接字符串的  
  strDBPath.MakeUpper();  
  if   (strDBPath.Right(4)   ==   _T(".DBC"))  
  {  
  strConnectionString.Format(_T("Driver={Microsoft   Visual   FoxPro   Driver};UID=;PWD=;")  
  _T("SourceType=DBC;SourceDB=%s;Exclusive=No;BackgroundFetch=No;Collate=Machine;"),    
  strDBPath);  
  TRACE(_T("%s\n"),   strConnectionString);  
  }  
  else  
  {  
  strConnectionString.Format(_T("Driver={Microsoft   Visual   FoxPro   Driver};UID=;PWD=;")  
  _T("SourceType=DBF;SourceDB=%s;Exclusive=No;BackgroundFetch=No;Collate=Machine;"),  
  strDBPath);  
  TRACE(_T("%s\n"),   strConnectionString);  
  }  
  m_pConnection->Open((LPCTSTR)strConnectionString,   _T(""),   _T(""),   adModeUnknown);  
   
  m_bDatabaseOpened   =   TRUE;  
  }  
  catch   (_com_error   e)    
  {  
  CloseDatabase();  
   
  m_bDatabaseOpened   =   FALSE;  
  }  
   
  return   m_bDatabaseOpened;  
  }  
   
  //-------------------------------------------------------------------------------  
  // 描 述: 关闭已经被打开的数据库  
  //-------------------------------------------------------------------------------  
  void   CVFPDatabase::CloseDatabase()  
  {  
  try  
  {  
  m_pConnection->Close();  
  }  
  catch   (_com_error   e)  
  {  
  try  
  {  
  m_pConnection.Release();  
  }  
  catch   (_com_error   e)  
  {  
  }  
  }  
   
  m_bDatabaseOpened   =   FALSE;  
  }  
   
  //-------------------------------------------------------------------------------  
  // 描 述: 检测数据库是否被打开  
  //-------------------------------------------------------------------------------  
  BOOL   CVFPDatabase::IsOpened()  
  {  
  return   m_bDatabaseOpened;  
  // return   TRUE;  
  }  
  Top

8 楼qrlvls( 空 气 )回复于 2005-05-11 23:44:05 得分 10

忘了拿新版本出来了  
  BOOL   CsVFPDatabase::OpenDatabase(LPCTSTR   szDatabase,   LPCTSTR   szUser,   LPCTSTR   szPassword,   long   lOption)  
  {  
  CString strDatabase(szDatabase);  
  CString strConnectionString;  
   
  // 根据数据库名称创建连接字符串  
  strDatabase.MakeUpper();  
  if   (strDatabase.Right(4)   ==   _T(".DBC"))  
  {  
  strConnectionString.Format(_T("Driver={Microsoft   Visual   FoxPro   Driver};UID=;PWD=;")  
  _T("SourceType=DBC;SourceDB=%s;Exclusive=No;BackgroundFetch=No;Collate=Machine;"),    
  strDatabase);  
  }  
  else  
  {  
  strConnectionString.Format(_T("Driver={Microsoft   Visual   FoxPro   Driver};UID=;PWD=;")  
  _T("SourceType=DBF;SourceDB=%s;Exclusive=No;BackgroundFetch=No;Collate=Machine;"),  
  strDatabase);  
  }  
   
  // 连接数据库  
  return   OpenConnection(strConnectionString,   szUser,   szPassword,   lOption);  
  }  
  Top

9 楼qrlvls( 空 气 )回复于 2005-05-11 23:45:03 得分 0

void   CVFPRecordset::Attach(CVFPDatabase   *pdbVFP)  
  {  
  if   (pdbVFP->IsOpened())  
  {  
  m_pDatabase   =   pdbVFP;  
  TRACE(_T("AttachDatabase:   %08X\n"),   m_pDatabase);  
  }  
  }  
   
  //-------------------------------------------------------------------------------  
  // 描 述: 执行   SQL   语句  
  //-------------------------------------------------------------------------------  
  BOOL   CVFPRecordset::ExecuteSQL(CString   strSQL)  
  {  
  CString strExt;  
  CString strFileName;  
   
  CString strVal;  
  int i   =   0;  
   
  if   (m_pDatabase   ==   NULL)  
  return   FALSE;  
   
  Close();  
   
  try  
  {  
  m_pRecordset.CreateInstance(_T("ADODB.Recordset"));  
  m_pRecordset->Open((LPCTSTR)strSQL,   _variant_t((IDispatch*)m_pDatabase->m_pConnection,   true),  
  adOpenDynamic,   adLockPessimistic,   adCmdText);  
  m_bValid   =   TRUE;  
  }  
  catch   (_com_error   e)    
  {  
  Close();  
  m_bValid   =   FALSE;  
  }  
   
  return   m_bValid;  
  }  
   
  //---------------------------------------------------------------------------  
  // 描 述: Excel   读取线程  
  //---------------------------------------------------------------------------  
  DWORD   WINAPI   CMainFrame::__ThreadExcelRead(LPVOID   pParameter)  
  {  
  CMainFrame *pObj   =   (CMainFrame*)pParameter;  
   
  _Application *pExcelApp;  
  Workbooks objExcelBooks;  
  Sheets objExcelSheets;  
  _Workbook objWorkBook;  
  _Worksheet objWorkSheet;  
   
  COleVariant varOptional(DISP_E_PARAMNOTFOUND,   VT_ERROR);  
  COleVariant varTrue((short)TRUE);  
  COleVariant varFalse((short)FALSE);  
  ExcelNode sExcelNode;  
  int nRow;  
  CString strExcelFile;  
   
  CoInitialize(NULL);  
   
  pExcelApp =   new   _Application;  
  pExcelApp->CreateDispatch(_T("Excel.Application")); //   创建   Excel   应用程序  
  objExcelBooks =   pExcelApp->GetWorkbooks();  
  pObj->m_wndStatusBar.SetInformation(pObj->m_strExcelFile,   RGB(0,   0,   255));  
  strExcelFile.Format(_T("%s\\EXCEL\\%s"),   pObj->m_strCurrentPath,   pObj->m_strExcelFile);  
  objExcelBooks.Open(strExcelFile,    
  varFalse,   varFalse,   varOptional,   varOptional,   varOptional,  
  varFalse,   varOptional,   varOptional,   varTrue,   varOptional,   varOptional,   varFalse);  
  objWorkBook =   objExcelBooks.GetItem(COleVariant((short)1));  
  objExcelSheets =   objWorkBook.GetSheets();  
  objWorkSheet =   objExcelSheets.GetItem(COleVariant((short)1));  
  objWorkSheet.Activate();  
  // pExcelApp->SetVisible(TRUE); //   显示   Excel   应用程序  
   
  nRow   =   6;  
  while   (__ExcelReadLine(objWorkSheet,   nRow,   &sExcelNode))  
  {  
  _tcscpy(sExcelNode.szExcel,   pObj->m_strExcelFile);  
  ::SendMessage(pObj->m_hWnd,   UM_EXCEL_READ_DATA,   (WPARAM)&sExcelNode,   0);  
  nRow   ++;  
  }  
   
  objWorkBook.SetSaved(TRUE);  
  objExcelBooks.Close();  
  delete pExcelApp;  
   
  CoUninitialize();  
  ::SendMessage(pObj->m_hWnd,   UM_EXCEL_READ_COMPLETE,   0,   0);  
   
  return   0;  
  }  
  Top

10 楼wshcdr(dd)回复于 2005-05-12 09:02:18 得分 0

vc开发数据库的东西比较累,那VC最适合开发什么东西呢?  
  //////////////////////////////////  
  不仅VC了,用C来开发数据库都比较累  
  VC适合系统级的开发,   比如驱动。Top

11 楼wangjia184(我就是传说中的。。。。。。SB)回复于 2005-05-12 09:10:26 得分 0

VC适合开发   开发工具啊Top

12 楼elian(elian)回复于 2005-05-12 17:51:18 得分 0

诶,可怜啊.看来还是先去学vfp把!  
  to空气,不是要vc操作vfp的数据库,是excel数据导入到access!!!Top

13 楼SoLike(思危)回复于 2005-05-12 17:57:27 得分 0

数据库不是VC的特长,但只要有一定的代码积累,开发相关应用也是比较轻松的。  
  你做VC时间不是太长吧Top

14 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-05-12 18:59:19 得分 0

VC又不是万能,各个工具都有自己的长处和短处Top

15 楼batboys(BatSky)回复于 2005-05-12 19:09:24 得分 0

其实VC是可以开发任何东西的  
  只是看你想不想得到```  
  只有你能想到,就会有办法解决的`  
   
  至于难与易   不是哪么想的`  
   
  Top

16 楼elian(elian)回复于 2005-05-22 16:48:13 得分 0

话虽然这么说的,不过什么都要与时俱进.  
  今天下午坐在办公室里,就花了一个小时,从没接触过vfp,就搞定了上述的两个问题  
  有时候觉得vfp也是恨强的  
  哈哈哈,虽然以前比较bs它,现在才错了知道Top

17 楼newzk(zk)回复于 2005-05-22 17:03:34 得分 0

照你的说法,vc都不如word、excel  
   
  你是杀鸡用牛刀Top

相关问题

  • 讨论:关于VFP物理删除记录问的的讨论
  • 专题讨论:VC与SQL Server
  • 有关VC编辑器的讨论
  • 学习VC的步骤大讨论!
  • 讨论,VFP的ADO方式与SPT??
  • VC(IDE)环境下的调试讨论!
  • 讨论C#,Delphi,VC++,欢迎发言
  • vc不足处与BC可取处(VC高手请进来讨论讨论)
  • VC的朋友过来聊聊天,元旦嘛,轻松轻松,讨论讨论.............
  • 讨论讨论:编程工具那个更有前途?java?perl?vc?c#?.......?

关键词

  • vc
  • 数据库
  • vfp
  • 打印
  • excel
  • word
  • cvfpdatabase
  • strconnectionstring
  • strdbpath
  • 开发

得分解答快速导航

  • 帖主:elian
  • steedhorse
  • krh2001
  • qrlvls
  • qrlvls

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo