社区
C++ Builder
帖子详情
关于两个窗体调用的问题,我用一个窗体的按钮操作另一个窗体的ADOQuery1为什么总抱地址错误?
lurel
2004-06-07 03:37:04
我在一个窗体中加入了一个ADOQuery1,然后open(),在另一个窗体中加入一个按钮来控制ado指针记录的移动使ADOQuery1->Next(),为什么运行程序后,点击这个按钮,就抱内存地址错误?怎么回事,请大侠们解决!!
...全文
179
14
打赏
收藏
关于两个窗体调用的问题,我用一个窗体的按钮操作另一个窗体的ADOQuery1为什么总抱地址错误?
我在一个窗体中加入了一个ADOQuery1,然后open(),在另一个窗体中加入一个按钮来控制ado指针记录的移动使ADOQuery1->Next(),为什么运行程序后,点击这个按钮,就抱内存地址错误?怎么回事,请大侠们解决!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zszzm
2004-06-12
打赏
举报
回复
静态建立试试,应该可以的
free1949
2004-06-11
打赏
举报
回复
或者,你可以看看错误是不是和detailfrm的DB控件有关,即先删除DB控件,然后执行djcxfrm->ADOQuery1->next()试试。
Behard
2004-06-11
打赏
举报
回复
detailfrm 用来干什么?
还有在 ADOQuery1->Next(); 前,请先判断 ADOQuery1->Bof 与 ADOQuery1->Eof;
Behard
2004-06-11
打赏
举报
回复
void __fastcall Tdjcxfrm::FormCreate(TObject *Sender)
{
detailfrm = new Tdetailfrm(this);
}
//---------------------------------------------------------------------------
void __fastcall Tdjcxfrm::DBGridEh1DblClick(TObject *Sender)
{
detailfrm->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall Tdjcxfrm::Button1Click(TObject *Sender)
{
ADOQuery1->Next();
}
???
我怎么没有看明白你的程序架构?
weill
2004-06-10
打赏
举报
回复
不好意思,本人好菜,这儿有点儿看不懂:
ADOQuery1->Parameters->Items[1]->Value=FormatDateTime("yyyy-mm-dd",DateTimePicker2->DateTime);
ADOQuery1->Open();
嘻……本人一般都使用标准的SQL语句去操作ADOQuery,楼主的这个代码让偶有点儿发晕。
weill
2004-06-10
打赏
举报
回复
应该不会出错,因为本人这一阵子正好在写一个SQL的数据库管理的程序,我的程序中没少用这种操作。
至于楼主的程序如果会出错,那么,存在以下几种可能。
1、ADOQuery1所在窗体没有被构建。
2、ADOQuery1不处在活动中。
另,楼主的代码中,ADOQuery1似乎是用于持行一个带参数的存储过程。
对于持行存储过程的ADOQuery1是否能使用Next,本人没试,建议你在单窗体中试试。如果在单窗体中能做到,在多窗体中应该也没问题。如果在单窗体中都不能,那么,就是ADOQuery1或是你的存储过程上的问题了(包知不应该这样用)。
yesry
2004-06-10
打赏
举报
回复
代码还是不完整。
lurel
2004-06-08
打赏
举报
回复
强烈建议大家回复以前自己试一下,不要说大家都知道的.
lurel
2004-06-08
打赏
举报
回复
在form2中放入按钮,然后click时间中写djcxfrm->ADOQuery1->next();在编译后,点击这个按钮就会抱错,在这里detail窗体中的个DB控件是显示djcxfrm当前记录值的,但就是不能使djcxfrm->ADOQuery1->next();一运行就会抱内存地址出错.
lurel
2004-06-08
打赏
举报
回复
我的确已经构建了,请看原码
Form1:djcx
//---------------------------------------------------------------------------
#ifndef djcx_cH
#define djcx_cH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include "DBGridEh.hpp"
#include <ADODB.hpp>
#include <Buttons.hpp>
#include <ComCtrls.hpp>
#include <DB.hpp>
#include <ExtCtrls.hpp>
#include <Grids.hpp>
#include "detail_c.h"
//---------------------------------------------------------------------------
class Tdjcxfrm : public TForm
{
__published: // IDE-managed Components
TPanel *Panel1;
TLabel *Label1;
TShape *Shape1;
TDateTimePicker *DateTimePicker1;
TDateTimePicker *DateTimePicker2;
TBitBtn *BitBtn1;
TADOQuery *ADOQuery1;
TBCDField *ADOQuery1BD_ID;
TStringField *ADOQuery1KM_ID;
TStringField *ADOQuery1KM;
TStringField *ADOQuery1FBDWDM;
TStringField *ADOQuery1FBDW;
TStringField *ADOQuery1SBDWDM;
TStringField *ADOQuery1SBDW;
TStringField *ADOQuery1BZH_ID;
TStringField *ADOQuery1BZH;
TBCDField *ADOQuery1JE;
TStringField *ADOQuery1DX;
TStringField *ADOQuery1ZY;
TStringField *ADOQuery1LRR;
TStringField *ADOQuery1ZFBZ;
TDateTimeField *ADOQuery1RQ;
TDataSource *DataSource1;
TDBGridEh *DBGridEh1;
void __fastcall BitBtn1Click(TObject *Sender);
void __fastcall FormCreate(TObject *Sender);
void __fastcall DBGridEh1DblClick(TObject *Sender);
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
Tdetailfrm *detailfrm; //在这里声明detail
public: // User declarations
__fastcall Tdjcxfrm(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE Tdjcxfrm *djcxfrm;
//---------------------------------------------------------------------------
#endif
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "djcx_c.h"
#include "dm.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "DBGridEh"
#pragma resource "*.dfm"
Tdjcxfrm *djcxfrm;
//---------------------------------------------------------------------------
__fastcall Tdjcxfrm::Tdjcxfrm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall Tdjcxfrm::BitBtn1Click(TObject *Sender)
{
ADOQuery1->Close();
ADOQuery1->Parameters->Items[0]->Value=FormatDateTime("yyyy-mm-dd",DateTimePicker1->DateTime);
ADOQuery1->Parameters->Items[1]->Value=FormatDateTime("yyyy-mm-dd",DateTimePicker2->DateTime);
ADOQuery1->Open();
}
//---------------------------------------------------------------------------
void __fastcall Tdjcxfrm::FormCreate(TObject *Sender)
{
detailfrm = new Tdetailfrm(this);
}
//---------------------------------------------------------------------------
void __fastcall Tdjcxfrm::DBGridEh1DblClick(TObject *Sender)
{
detailfrm->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall Tdjcxfrm::Button1Click(TObject *Sender)
{
ADOQuery1->Next();
}
//---------------------------------------------------------------------------
Form2:detail
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "detail_c.h"
#include "djcx_c.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Tdetailfrm *detailfrm;
//---------------------------------------------------------------------------
__fastcall Tdetailfrm::Tdetailfrm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
guanshangming
2004-06-07
打赏
举报
回复
你需要确定包含ADOQuery的窗口是否已经构建了实例,如果你调用该窗口时该窗口并没有构建,就会发生以上情况。
建议建立一个DataModule来包含所有的Table,Query和DataSource组件。然后,在所有窗口构建之前先构建DataModule模块。
robbyzi
2004-06-07
打赏
举报
回复
Form1->ADOQuery1->Next();
Form1上的记录集指针将向后移
也许你的Form2也拉了一个ADOQuery的控件,而你现在想对Form1的ADOQuery进行操作,
但实际上却操作了Form2的,因此内存出错。。(猜测而已,呵)
jevin8011
2004-06-07
打赏
举报
回复
同意xjjxing的答案
例如有两个窗口 Form1和Form2
在 Unit1.cpp 中加入一行 #include "Unit2.h"
在 Unit2.cpp 中加入一行 #include "Unit1.h"
cn1->Connected=false;
String strPath;
strPath="D:\\work\\tools";
cn1->ConnectionString="FILE NAME="+strPath+"\\test.udl";
Qry1->Close();
Qry1->SQL->Clear();
Qry1->SQL->Add("select * from JulianDateTest");
Qry1->Open();
Form2->ShowModal();
当Form2 显示时,如果 Form2 窗体上有一个按钮:在按钮事件中加入
Form1->Qry1->Next();
Form1上的记录集指针将向后移
xjjxing
2004-06-07
打赏
举报
回复
Form2->ADOQery1->Next();
Delphi进度条(多线程),美观不卡界面,简单开启,定位,结束
Delphi进度条(多线程),美观不卡界面,简单开启,定位,结束: 包目录(MyProgress): MyProgress.dcu //最终引用 MyProgressPackage.bpl //安装包 MyProgressPackage.bpi MyProgressPackage.dcp MyProgressPackage.lib 包安装(无需编译,直接安装): 将包目录(MyProgress)复制到目标安装目录 Delphi\菜单\Component\Install Packages\...选择包目录中的包文件 .\MyProgressPackage.bpl 添加路径: Delphi\菜单\Tools\Options\Environment Options\Delphi Optioins\Library\Library path: 添加包目录 在工程中单元中引用: uses MyProgress 功能列表: 1.开启进度(标题,消息,透明度(0-255),是否同步任务栏,是否有边框) procedure StartPro(aTitle,aMsg:String; AlphaValue:Integer=0; IsSyncTaskbar:Boolean=True; IsHasBorder:Boolean=True);//显示动画 2.给养进度(标题,,消息):保持或更新进度指示,不
调用
则保持StartPro时的状态 procedure FeedPro(aTitle:String; aMsg:String='正在处理中, 请等待...'); 3.关闭进度 procedure ClosePro;
Delphi开发学习二:使用
ADO
Query
控件对SQL数据库表进行
操作
在delphi学习一中,已经使用
ADO
Connection控件设置属性连接数据库SQL了。 在这里开始使用
ADO
Query
控件对SQL数据库表进行
操作
。 首先我们在SQL中创建数据库名为PERSONNELMG_SYS的数据库,然后在这个数据库里创建USER_TABLE表,用来存放用户账户信息。 USER_TABLE表的结构如下图所示: 该表有用户名(USER_NAME) 、用户密码(USE
c
窗体
连接mysql_c
窗体
如何连接数据库
如何使用C++ Builder 6.0连接Access数据库本文假定所需连接的Access数据库为db_restaurant,如何连接db_restaurant,现在将拉开帷幕。首先,通过使用“File→New→Data Module”创建
一个
用于连接数据库的
窗体
。然后,在“
ADO
”选项卡下选择“
ADO
Connection”控件与“
ADO
Query
”控件...文章狂斩一条龙2011-04-1449...
delphi中
调用
oracle的存储过程(
ADO
DataSet,
ADO
Query
,过程带返回值不带返回值均有)
http://search.csdn.net/Expert/topic/2280/2280860.xml?temp=2.169436E-02 论坛中JCC0128 网友的发言 【delphi+oracle报表解决方案(一)】delphi中
调用
oracle的存储过程(分带返回游标,不返回值两种) 关键字: delphi ,oracle存储过程,游标,返回数据集,报表 注:de
delphi :
窗体
的close,free,destroy的区别
一、
我用
application.create(TForm2,Form2)语句,创建了Form2,可是
调用
了Form2.close后,重新
调用
Form2.show. 刚才所创建的Form2仍然存在。问为了节约资源,应该怎样使用close,free,destroy. 三者的关系是什么? 1、Action:=caFree。 2、 with TForm1.Create(Application) do Try ShowModal ; ...
C++ Builder
13,826
社区成员
102,678
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章