找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1141|回复: 5

[ARX函数]:二次开发中数据库连接的调试错误

[复制链接]
发表于 2002-4-17 23:32:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
二次开发中数据库连接的调试错误
   
   在CAD中加载,出现“AUTOCAD.30.Drawing”
   选 是——》致命的错误---》退出CAD
      否----》出现对话框-》出现“ARX
命令发生异常,未处理的异常(0000005(---))”---》死机
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-4-18 02:40:51 | 显示全部楼层

请贴出代码

请贴出代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-4-23 10:48:02 | 显示全部楼层

调试错误

//
// ObjectARX defined commands

#include "StdAfx.h"
#include "StdArx.h"
#include "MMDlg.h"
#include "Maindlg.h"
#include "TjDlg.h"
//CMaindlg* dlg;

extern "C" HWND adsw_acadMainWnd();

//执行主窗口的函数,加载出现错误:
// unhandle  Exception  E06D7363(e06d7363h)at address 7800A6FFh
// This is command 'TZGL'
void CLcxcadtzgl()
{
           CDatabase m_db;
        m_db.Open( "tzglxt" );
        CString m_sreg1, m_sreg2, m_sreg3;
        m_sreg1 = (m_db.GetDatabaseName()).Left(15) + "drdwg\\regsvr32.exe";
        m_sreg2 ="/s " + (m_db.GetDatabaseName()).Left(15) + "drdwg\\drdwg.ocx";
        m_sreg3 = " /u /s" + (m_db.GetDatabaseName()).Left(15) + "drdwg\\drdwg.ocx";
        ShellExecute(NULL, "open", m_sreg1, m_sreg2, NULL, SW_SHOWNORMAL);
        Sleep(2000);
        CMMdlg dlg;
        dlg.DoModal();
        dlg.Getparam(&m_db);
        if( dlg.DoModal() == IDOK && dlg.Returnparam() != 0 )
        {
        CMaindlg Maindlg;
        Maindlg.Getparam( &m_db, dlg.Returnparam() );
        Maindlg.DoModal();
        }
        ShellExecute(NULL, "open", m_sreg1, m_sreg3, NULL, SW_SHOWNORMAL);
        m_db.Close();
   
}
//删除一些,仍有错,死机退出

// This is command 'TZGL'
void CLcxcadtzgl()
{
        CMaindlg Maindlg(CWnd::FromHandle(adsw_acadMainWnd()));
        Maindlg.DoModal();
}


我便检查CMaindlg类的初始化函数
BOOL CMaindlg::OnInitDialog()
{
        CAcUiDialog::OnInitDialog();
        m_bmp.LoadBitmap( IDB_BITMAP1 );
        HBITMAP m_hbmp = (HBITMAP) m_bmp.GetSafeHandle();
        m_cbt9.SetBitmap(m_hbmp );
        AcDbDatabase *pDb = acdbCurDwg();
        pDb->saveAs( ((*m_pdb).GetDatabaseName()).Left(15)
        + "dwg\\" + "temp.dwg" );  //有问题
        if( m_nmm == 1 )
        {
                m_cbt2.EnableWindow( TRUE );
                m_cbt3.EnableWindow( TRUE );
        }
        CMaindlg::SetTimer( 1, 100, NULL ); //有问题       
        return TRUE;  // return TRUE unless you set the focus to a control
                      // EXCEPTION: OCX Property Pages should return FALSE
}
删除一些,出现主窗口

BOOL CMaindlg::OnInitDialog()
{
        CAcUiDialog::OnInitDialog();
//        m_bmp.LoadBitmap( IDB_BITMAP1 );
//        HBITMAP m_hbmp = (HBITMAP) m_bmp.GetSafeHandle();
//        m_cbt9.SetBitmap(m_hbmp );
//        AcDbDatabase *pDb = acdbCurDwg();
//        pDb->saveAs( ((*m_pdb).GetDatabaseName()).Left(15)
//        + "dwg\\" + "temp.dwg" );  //有问题
//        if( m_nmm == 1 )
//        {
                m_cbt2.EnableWindow( TRUE );
                m_cbt3.EnableWindow( TRUE );
//        }
//        CMaindlg::SetTimer( 1, 100, NULL ); //有问题       
        return TRUE;  // return TRUE unless you set the focus to a control
                      // EXCEPTION: OCX Property Pages should return FALSE
}

双击“产品选择”出现异常“UnHandle Exception c00005 at address 5f442857h” 死机退出
检查CCpxzDlg 类

BOOL CCpxzDlg::OnInitDialog()
{  
        CAcUiDialog::OnInitDialog();
        CCpSet m_rs(m_pdb);
        m_rs.Open(AFX_DB_USE_DEFAULT_TYPE,"CP");
        while (!m_rs.IsEOF())
        {
        m_clb1.AddString ( m_rs.m_CPMC );
        m_rs.MoveNext();
        }
        m_rs.Close();
        m_clb1.SetCurSel( 0 );
        m_clb1.SetFocus();

        if( m_nmm == 1 )
        {
                m_cbt1.EnableWindow( TRUE );
                m_cbt2.EnableWindow( TRUE );
                m_cbt3.EnableWindow( TRUE );
        }
        return TRUE;  // return TRUE unless you set the focus to a control
                      // EXCEPTION: OCX Property Pages should return FALSE
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-4-24 00:49:38 | 显示全部楼层

错误

//删去数据库的读取,加载正常,但产品选择对话框没内容

BOOL CCpxzDlg::OnInitDialog()
{  
        CAcUiDialog::OnInitDialog();
        if( m_nmm == 1 )
        {
                m_cbt1.EnableWindow( TRUE );
                m_cbt2.EnableWindow( TRUE );
                m_cbt3.EnableWindow( TRUE );
        }
        return TRUE;  // return TRUE unless you set the focus to a control
                      // EXCEPTION: OCX Property Pages should return FALSE
}



//以下涉及数据库的全有问题
void CCpxzDlg::OnOK()
{
    if(m_clb1.GetCurSel() == LB_ERR )
        AfxMessageBox( "请选择产品名称!" );
        else
        {
                m_clb1.GetText( m_clb1.GetCurSel(), m_cpmc );
                CAcUiDialog::OnOK();
        }       
}

void CCpxzDlg::OnButton1()
{
        CCpxgDlg dlg;
        if( m_clb1.GetCurSel() == LB_ERR )
                AfxMessageBox( "请选择要修改的产品名称!" );
        else
        {
                CString m_cpmc;
                m_clb1.GetText( m_clb1.GetCurSel(), m_cpmc ) ;
                dlg.Getparam(m_pdb, m_cpmc);
                if(dlg.DoModal() == IDOK)
                {
                        int m_ncpmc = m_clb1.GetCurSel();
                        m_clb1.DeleteString( m_ncpmc );
                        m_clb1.InsertString ( m_ncpmc, dlg.Returnparam() );
                }
        }
       
}

void CCpxzDlg::OnButton2()
{
        if( m_clb1.GetCurSel( ) == LB_ERR )
                AfxMessageBox( "请选择要删除的产品名称!" );
        else
        {
                m_clb1.GetText( m_clb1.GetCurSel(), m_cpmc ) ;
                if( AfxMessageBox( m_cpmc + "将被删除!", MB_YESNO ) == IDYES)
                {
                        char m_cphm[10];
                        double m_ncphm = 0;
                        CString m_file;
                        CCpSet m_rscp( m_pdb );
                        m_rscp.Open( AFX_DB_USE_DEFAULT_TYPE, "cp" );
                        while ( !m_rscp.IsEOF() )
                        {
                                if( m_cpmc == m_rscp.m_CPMC )
                                {
                                        m_ncphm = m_rscp.m_CPHM;
                                        break;
                                }
                                m_rscp.MoveNext();
                        }
                        _i64toa ( m_ncphm, m_cphm, 10);

                        int i=0;
                        CTzSet m_rs(m_pdb);
                        m_rs.Open( AFX_DB_USE_DEFAULT_TYPE, m_cphm );
                        if( m_rs.IsEOF() != 0 )
                                i=1;
                        else
                                AfxMessageBox( "请首先删除该产品的零部件!" );
                        m_rs.Close();

                        if( i == 1 )
                        {
                                m_rscp.Delete();
                                m_file = (*m_pdb).GetDatabaseName() + "\\" + m_cphm +".dbf";
                                DeleteFile( m_file );
                                m_clb1.DeleteString( m_clb1.GetCurSel() );
                        }

                        m_rscp.Close();

                }
        }
       
       
}

void CCpxzDlg::OnButton3()
{
           CCptjDlg dlg;
        dlg.Getparam( m_pdb );
        if(dlg.DoModal() == IDOK)
                m_clb1.AddString ( dlg.Returnparam() );
               
}
void CCpxzDlg::Getparam(CDatabase * pdb, int nmm)
{
        m_pdb = pdb;
        m_nmm = nmm;

}

CString CCpxzDlg::Returnparam()
{
        return m_cpmc;
       
}


BOOL CMxlxgDlg::OnInitDialog()
{
        CAcUiDialog::OnInitDialog();
                double m_ntzhms = 0;
        char xh[10];
        CTzSet m_rs(m_pdb);
        m_rs.Open( AFX_DB_USE_DEFAULT_TYPE, m_cphm );
        while (!m_rs.IsEOF())
        {
                if( m_rs.m_MC == m_tzmc )
                        m_ntzhms = m_rs.m_HM;
                m_rs.MoveNext();
        }
        m_rs.MoveFirst();
        while (!m_rs.IsEOF())
        {
                if( m_rs.m_HMS == m_ntzhms && m_rs.m_XH == m_tzxh )
                {
                        _itoa( m_rs.m_XH, xh, 10);
                        m_ced1.SetWindowText( CString(xh) );
                        m_ced2.SetWindowText( m_rs.m_DH );
                        m_ced3.SetWindowText( m_rs.m_MC );
                        m_ced4.SetWindowText( m_rs.m_SL );
                        m_ced5.SetWindowText( m_rs.m_CL );
                        m_ced6.SetWindowText( m_rs.m_ZL );
                        m_ced7.SetWindowText( m_rs.m_ZZ );
                        m_ced8.SetWindowText( m_rs.m_BZM );
                        if( m_rs.m_LX != "标准件" )
                        {
                                m_ced2.EnableWindow( FALSE );
                                m_ced3.EnableWindow( FALSE );
                        }
                        break;
                }
                m_rs.MoveNext();
        }
        m_rs.Close();
       
         
        return TRUE;  // return TRUE unless you set the focus to a control
                      // EXCEPTION: OCX Property Pages should return FALSE
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2018-5-15 19:05:17 | 显示全部楼层
我也有这个问题不知道楼主是怎么解决的呢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2018-5-15 19:09:17 | 显示全部楼层
楼主,我现在用的AutoCAD2018也出现这个问题,不知道您是怎么解决的呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-25 21:23 , Processed in 0.315134 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表