Programming 版 (精华区)

作  家: compus (蓝天) on board 'programming'
题  目: ODBC-1
来  源: 哈尔滨紫丁香站
日  期: Sun Aug 10 12:23:23 1997
出  处: compus.bbs@bbs.net.tsinghua.edu.cn

有关本文∶
    本文收集了本版有关Visual C++中有关ODBC编程方面的有关问题,内容参见概览。

苗扬 于1996.8.23

=======================================================================

概览∶
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对应.
-------------------------------------------------------------------------------
----

--
※ 来源:·哈尔滨紫丁香站 bbs1.hit.edu.cn·[FROM: compus.bbs@bbs.net.t] 
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:5.098毫秒