本人整理了一些很紧迫的问题!请大家探讨一下!谢谢!

时间:2021-08-01 10:38:17
本人整理了一些很紧迫的问题!请大家探讨一下!谢谢!
 
   (按紧急状况排序:1-8,依次降低)

1。cb可以做到好像Word那样编辑吗??任意添加,拖动东西(这些都是我提供的)
是说:好像在cb中用QuickReport组件中,如果是运行QuickRep1->Preview();的时候,
预览的时候看到的那些组件,例如QRDBText类似的,可不可以做到运行的时候,可以
任意拖动,任意修改,任意添加(当然是有一定的限制),好像是在编程的时候一样???
运行的时候可以像编程的时候,可以任意添加,拖动东西(这些都是我提供的),
好像是Word的一样呢???

--------------------------------------------------------------------------
2。我是用ODBC数据源连接数据库的,这是一般的做法吧!
我是用Windows里面的ODBC建立数据源的,不是用cb里面的BDE Administrator建立的!
但是,我做的东西,如果要给别人用,那就一定要做一个Setup文件,那么用
install sheld for c++ builder可否能够将我的所有设计(包括ODBC数据源的设计)
都在Setup中在别人的机器上建立呢????
如果我用cb里面的BDE Administrator建立的数据源,就可以了吗???
用Windows里面的ODBC建立数据源和用cb里面的BDE Administrator建立数据源,有什么区别??

如果不行的话,那么就要有以下这个大问题拉!!!
我建立的数据库能否能在setup中自动生成,如果不行,那么怎样建立一个数据库???
数据库里面的表可以建立,这一点我会。
那么在建立了数据表以后,怎样建立数据源指向这个数据库呢???

在cb中能否建立一个ODBC数据源,是建立,不是连接??就是说:做到能够建立一个
Alias,建立它的连接的数据库,就好像是在ODBC那里建立一样,建立一个连接SQL Server
里面的一个数据库的一个数据源????或者是连接Access中的一个数据表的数据源???

Session的AddStandAlias也只是对于Paradox或者是dbase才有用的,对于Access或者是
SQL Server不知道行不行???

--------------------------------------------------------------------------
3。我用LoginParams来传递用户名和密码,就好像下面一样! 
  在Database的onlogin事件那里写: 
  void __fastcall TForm1::Database1Login(TDatabase *Database,
        TStrings *LoginParams)
   {
     Database1->LoginPrompt=false;  // 这里不知道是true还是false?????我用true
                                    // 或者false都是可以的!
     LoginParams->Values["USER NAME"]=Edit1->Text;
     LoginParams->Values["PASSWORD"]=Edit2->Text;
   }
  但是,如果我输错了用户名或密码,一运行就会出错,可不可以在我输错了用户名或
 密码的时候,提示我输错了,让我重输,不是程序跳出来呢???我曾经用过
 try{},catch(...){}都是没有用的!不知道为什么!!

-------------------------------------------------------------------------
4。怎么才能知道其中一个field的数据类型是什么???或者说在cb中任意一个
变量,常量的类型,应该怎样知道??

--------------------------------------------------------------------------
5。为什么在用cb在SQL Server建立的表中插入一列,老是出错,说什么index,
之类的???? 我发觉用cb在SQL Server建立的表中中插入一列,很麻烦,但是在
Access建立的表中插入一列就好像没有这么多的限制!!究竟对于SQL Server建立的
表中插入一列,有什么的限制?于Access不同吗??

--------------------------------------------------------------------------
6。在example里找apps下的trayIcon的那个例子,就是说怎样把程序缩到右下角的那个例子,
你看得懂吗??如果懂得话,可否指点一下???

--------------------------------------------------------------------------
7。用ShellExecute怎样可以打开一个Form??或者如果打开一个文件,那么是相对路径
还是绝对路径??如果只能是绝对路径,那么同一个程序在另外一台机器就不能运行拉!

--------------------------------------------------------------------------
8。StoredProc(存储过程)用来干什么的?和Query,table那些有什么区别? 怎样用??

20 个解决方案

#1


分太少

#2


哦!
请大家回复回复吧!!!

#3


天……我都不会……我回去研究一下……

#4


1、可以。
2、那是两套数据库驱动,当然不同。
4、如果是SQLServer的话有标准SQL语句可以得到表结构
6、你哪里看不懂?主要函数是这个Shell_NotifyIcon,可以查查帮助。
7、打开什么文件,ShellExecute当你打开的不是可执行文件时会自动使用关联来打开程序。
8、用于在服务器端处理大量数据运算工作,可以减轻网络数据流量。
最后,分太少。

#5


请问SAsura:
第一个问题,cb里面真的有组件可以做像word的一样运行过程中编辑吗??
能否说的详细一点啊!!
最后请问:怎样加分啊???增加问题点子啊??你们都嫌分太少!!

#6


1 可以 有一套叫做fastreport的控件,可以参考
2 odbc和bde是两套东西。目前推荐是用ADO.至少BDE不怎么样。除非你在做interbase
3 没试过,不过觉得理论上应该用false.然后,如果密码错误,应该打不开数据库。
  这时候,读一条记录看看,就会出错。这样,就能try catch了。
4 知道有什么用处呢?有各种转换函数,可以转换的啊。
5 没什么不一样的。具体请帖代码
6 看得懂。其实,如果懒得看这个,有许多控件都可以完成。
7 用相对路径啊。
8 数据运算在服务器端完成。节省客户端资源。

#7


什么叫fastreport啊???
运行的时候也可以像在cb中编辑的时候那样增加名字之类的东西,和拖动它吗??
完全像在word那样啊???它可以做到吗??

#8


fast report是一个报表控件,仿word的。你可以找来加以改造。
完全能做到。
在www.active.com.cn/delphi能找到。


#9


分是太少了!不加了吗?

#10


第8个问题,我记得应该是可以使服务器反应更快,存储过程是在数据库启动时预编译执行了的,所以,某种程度上不用像扑通的slq语句那样费时,至于数据流量,我想是一样的,不知小弟有否说错,指教!!!

#11


1、你要么找些控件,要么自己编程序实现,没有什么特效用程序实现不了的,大不了自己画。
3、连数据库之前要LoginPrompt=false,不然不触发OnLogin事件,触发此事件后,此属性就无所谓了,关于你那个错误,可能是你把try...catch...放错地方了,很少有try...catch...抓不到得异常
8、存储过程是存放在服务器端的,处理数据不用经过网络传输这一步,直接返回结果,当然会减轻网络负担了,还会比客户端的快。

#12


多谢大家的回复!
现在,3,5,7,8题已经行了!!
谢谢大家!
希望大家以后针对1,2,4,6题回复!!!!谢谢大家拉!!!

#13


关注

#14


关注

#15


第一个问题的出现,证明要么是你太懒,要么就是菜Bird!

#16


什么意思啊??
我是一个初学者啊!
为什么说太栏呢?
很容易做得吗??

#17


兄弟别难过,也别灰心。
1、QuickReport的高版本可以做到,你可以在www.csdn.net中找到QuickReport的3.08版
2、可以做到,不过比较麻烦,你最好还是使用BDE的数据源,在程序中动态的创建BDE的数据源比较好,而且速度会快一些,因为你是用ODBC来访问数据的话实际上是这么一个过程:应用程序---BDE---ODBC数据库环境----数据库。如果使用BDE的还就没有ODBC这一层了。你需要动态的修改你的程序运行时的一些参数(关于数据库的参数),这样就可以了实行了。
3、你的程序应该这么写(当然这不是绝对的,你可以有别的写法但是原则应该一致):
在Button1的OnClick事件中写:
Database1->LoginPrompt=false;  // 这里不知道是true还是false?????我用true
                                    // 或者false都是可以的!
Database1->Params->Values["USER NAME"]=Edit1->Text;
Database1->Params->Values["PASSWORD"]=Edit2->Text;
bool bConnectLogin=true;
while((!Database1->Connected) && bConnectLogin)
{
  try
  {
      Database1->Connected=true;
  }
  catch( ESomeTypeError & E)
  {
      if(E is SomeTypeError)
      {
         ....//向用户提示信息或者给出解决的方案和办法,然后将这些信息写到Database1中修正错误,比如Password错误,然后获取这确定password然后写到Database1的相关参数中等等
      }
      else if (...)
           {
           .....
           }    
           else if(E is SomeErrorCanExitWhile)
                 {
                  bConnectLogin=false;
                 }
  }
}
4、如果不是原子类型,可以通过ClassType、ClassName等相关方法获得数据的类型,如果是原子类型就比较麻烦了。
5、是由于SQL Server和Access的差别造成的,它们之间有很多的不同之处,你需要好好看一看这些数据的对于SQL 语句的要求。
6、不知道你需要看懂的是什么?  
其它的已经有人回答了。

#18


关注!

#19


关注! 

#20


2 install shield for cb express版可以设置BDE别名,但设置ODBC DSN要自己编程.如果你用Paradox/XBase的数据库就不用设置ODBC DSN.

#1


分太少

#2


哦!
请大家回复回复吧!!!

#3


天……我都不会……我回去研究一下……

#4


1、可以。
2、那是两套数据库驱动,当然不同。
4、如果是SQLServer的话有标准SQL语句可以得到表结构
6、你哪里看不懂?主要函数是这个Shell_NotifyIcon,可以查查帮助。
7、打开什么文件,ShellExecute当你打开的不是可执行文件时会自动使用关联来打开程序。
8、用于在服务器端处理大量数据运算工作,可以减轻网络数据流量。
最后,分太少。

#5


请问SAsura:
第一个问题,cb里面真的有组件可以做像word的一样运行过程中编辑吗??
能否说的详细一点啊!!
最后请问:怎样加分啊???增加问题点子啊??你们都嫌分太少!!

#6


1 可以 有一套叫做fastreport的控件,可以参考
2 odbc和bde是两套东西。目前推荐是用ADO.至少BDE不怎么样。除非你在做interbase
3 没试过,不过觉得理论上应该用false.然后,如果密码错误,应该打不开数据库。
  这时候,读一条记录看看,就会出错。这样,就能try catch了。
4 知道有什么用处呢?有各种转换函数,可以转换的啊。
5 没什么不一样的。具体请帖代码
6 看得懂。其实,如果懒得看这个,有许多控件都可以完成。
7 用相对路径啊。
8 数据运算在服务器端完成。节省客户端资源。

#7


什么叫fastreport啊???
运行的时候也可以像在cb中编辑的时候那样增加名字之类的东西,和拖动它吗??
完全像在word那样啊???它可以做到吗??

#8


fast report是一个报表控件,仿word的。你可以找来加以改造。
完全能做到。
在www.active.com.cn/delphi能找到。


#9


分是太少了!不加了吗?

#10


第8个问题,我记得应该是可以使服务器反应更快,存储过程是在数据库启动时预编译执行了的,所以,某种程度上不用像扑通的slq语句那样费时,至于数据流量,我想是一样的,不知小弟有否说错,指教!!!

#11


1、你要么找些控件,要么自己编程序实现,没有什么特效用程序实现不了的,大不了自己画。
3、连数据库之前要LoginPrompt=false,不然不触发OnLogin事件,触发此事件后,此属性就无所谓了,关于你那个错误,可能是你把try...catch...放错地方了,很少有try...catch...抓不到得异常
8、存储过程是存放在服务器端的,处理数据不用经过网络传输这一步,直接返回结果,当然会减轻网络负担了,还会比客户端的快。

#12


多谢大家的回复!
现在,3,5,7,8题已经行了!!
谢谢大家!
希望大家以后针对1,2,4,6题回复!!!!谢谢大家拉!!!

#13


关注

#14


关注

#15


第一个问题的出现,证明要么是你太懒,要么就是菜Bird!

#16


什么意思啊??
我是一个初学者啊!
为什么说太栏呢?
很容易做得吗??

#17


兄弟别难过,也别灰心。
1、QuickReport的高版本可以做到,你可以在www.csdn.net中找到QuickReport的3.08版
2、可以做到,不过比较麻烦,你最好还是使用BDE的数据源,在程序中动态的创建BDE的数据源比较好,而且速度会快一些,因为你是用ODBC来访问数据的话实际上是这么一个过程:应用程序---BDE---ODBC数据库环境----数据库。如果使用BDE的还就没有ODBC这一层了。你需要动态的修改你的程序运行时的一些参数(关于数据库的参数),这样就可以了实行了。
3、你的程序应该这么写(当然这不是绝对的,你可以有别的写法但是原则应该一致):
在Button1的OnClick事件中写:
Database1->LoginPrompt=false;  // 这里不知道是true还是false?????我用true
                                    // 或者false都是可以的!
Database1->Params->Values["USER NAME"]=Edit1->Text;
Database1->Params->Values["PASSWORD"]=Edit2->Text;
bool bConnectLogin=true;
while((!Database1->Connected) && bConnectLogin)
{
  try
  {
      Database1->Connected=true;
  }
  catch( ESomeTypeError & E)
  {
      if(E is SomeTypeError)
      {
         ....//向用户提示信息或者给出解决的方案和办法,然后将这些信息写到Database1中修正错误,比如Password错误,然后获取这确定password然后写到Database1的相关参数中等等
      }
      else if (...)
           {
           .....
           }    
           else if(E is SomeErrorCanExitWhile)
                 {
                  bConnectLogin=false;
                 }
  }
}
4、如果不是原子类型,可以通过ClassType、ClassName等相关方法获得数据的类型,如果是原子类型就比较麻烦了。
5、是由于SQL Server和Access的差别造成的,它们之间有很多的不同之处,你需要好好看一看这些数据的对于SQL 语句的要求。
6、不知道你需要看懂的是什么?  
其它的已经有人回答了。

#18


关注!

#19


关注! 

#20


2 install shield for cb express版可以设置BDE别名,但设置ODBC DSN要自己编程.如果你用Paradox/XBase的数据库就不用设置ODBC DSN.

#21