荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Peter (小飞侠), 信区: Program
标  题: VC ODBC FAQ
发信站: BBS 荔园晨风站 (Tue Jan 26 22:53:58 1999), 转信


概览∶
1.  用一个CRecordset类,有动态访问不同的DataSource的方法吗?
2. ODBC中的乱码?
3. 如何解决"Invalid precision Value"?

=======================================================================
发信人: hey (吟风), 信区: Visual
标  题: ODBC的问题
        我在用VISUAL C++1.5做ODBC,有一个问题,
        就是用一个CRecordset类,有动态访问不同的DataSource的方法吗?

====> 发信人: tsai.bbs@bbs.ncic1.ac.cn (小菜), 信区: Program
好象没有吧,先有DATA SOURCE, 后有RECORDSET,这是MFC数据库类库的机制决定
的。
就好象先登录进数据库后打开TABLE一样的道理。


====> HH_MOLL(苗扬)
    VC1.5我没有试过,但VC4.0可以实现访问不同Data Source。
先在ClassWizard中Create一个新类,该类的基类为CRecordSource
这样VC就会提示你输入Data Source。再为新创建的类生成适当的View即可。
    当然,用一个类是不行的。
----------------------------------------------------------------------
发信人: seasky@SMTH (zk), 信区: Program
标  题: 求教:使用VC4。0的ODBC的问题。

我在使用VC4。0的ODBC对FOXPRO 的DBF文件进行操作时,发现
从DBF文件读出的中文内容显示出来的是乱码,CSTAR2。0已启动
在WIN95(英文版〕环境下。

====> 发信人: Jeikul@SMTH (Seal), 信区: Program
you can try to use other .DBF driver instead of foxpro driver
such dBaseIII driver for ODBC.
-------------------------------------------------------------------------------

---
发信人: Cjsh@SMTH (朔漠), 信区: Program
标  题: 请问有关VC4.0对数据库进行操作的问题。

我在用VC++4.0做数据库增加新记录时遇到如下问题,请各位网友帮忙.

我的ODBC driver是foxpro2.5,事先我做了一个包括三个域:strname,
studentid,gradyear的数据库,是在forprow2.5 for windows下做的.
然后我定义了一个与该数据库相连的名为CDataSet1的CRecordSet的
继承类,通过对话框类来访问该类的一个对象.但总是出现一个"Invalid
precision Value"的错误.如果将数据库的字段换为整数,则可以正常
操作,我不知道是什么原因,是不是因为在增加字符串时对CString类
的有特殊要求.但我在使用VC++4.0提供的例子Enroll所带的数据库进
行插入新记录的操作时却又能正常完成插入.

附部分程序段:
CAddRecord::CAddRecord(CWnd* pParent /*=NULL*/)
        : CDialog(CAddRecord::IDD, pParent)
{
        //{{AFX_DATA_INIT(CAddRecord)
        m_GradYear = _T("");
        m_Name = _T("");
        m_StudentID = _T("");
        //}}AFX_DATA_INIT
}
        .
        .
        .
void CAddRecord::OnOK()
{
        CDataSet1 rsStudent( NULL );
        if(rsStudent.Open()){}
        rsStudent.AddNew( );
        m_GradYear = rsStudent.m_GRADYEAR;
        m_Name = rsStudent.m_STRNAME;
        m_StudentID = rsStudent.m_STUDENTID;
        rsStudent.SetFieldNull(&(rsStudent.m_STUDENTID), FALSE);
        UpdateData(TRUE);
        rsStudent.m_GRADYEAR=m_GradYear;
        rsStudent.m_STRNAME=m_Name;
        rsStudent.m_STUDENTID=m_StudentID;

        if( !rsStudent.Update( ) )     {
                AfxMessageBox( "Record not added; no field values were
set." );
        }
        CDialog::OnOK();
}
          UpdateData(TRUE);
>          rsStudent.m_GRADYEAR=m_GradYear;
>          rsStudent.m_STRNAME=m_Name;
>          rsStudent.m_STUDENTID=m_StudentID;
>
>          if( !rsStudent.Update( ) )
>          {
>                  AfxMessageBox( "Record not added; no field values were
set."
>  );
>
>          }
>          CDialog::OnOK();
>  }

====> 发信人: zhangdh@SMTH (Tree), 信区: Program
>  void CAddRecord::OnOK()
>  {
>          CDataSet1 rsStudent( NULL );
>          if(rsStudent.Open()){}
>          rsStudent.AddNew( );
>          m_GradYear = rsStudent.m_GRADYEAR;
>          m_Name = rsStudent.m_STRNAME;
>          m_StudentID = rsStudent.m_STUDENTID;
//  上面三句干舍?
//   删了试试
//改进建议:
//为什么不直接把dialog的输入Window与dataset的field对应.
-------------------------------------------------------------------------------

--
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.1.3]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店