17. 06.
我用ADOCONNECTION连到了excel文件,
我想在DBGrid中显示某个工作表,但是我要怎么知道这个EXCEL文件中有哪些工作表呢?
简单说就是怎么样获取工作表名,
使用ADOCONNECTION,ADOquery,
连接后,可以用ADOConnection1.GetTableNames()试试,能否获得列表,每个sheet就好像是一个table
sl:= tstringlist.create;
ADOConnection1.GetTableNames(sl,true);
showmessage(sl.text);
个人建议用cxGrid 你会发现 方便
学习了
自己写代码实现吧
17. 06.
使用的BDE 是不是说 编程序时文件夹在哪个目录就得安装到哪个目录?如不是,请推荐个安装程序
如是 请问怎么可以 实现安装在哪个文件夹都可以的功能
谢谢
我用的就是肥猫 可是安装到不带DELPHI的机器后 打开文件时显示错误
比如 我的原代码等文件在A电脑的D盘X文件下
我的问题是 是不是 安装到B电脑时 也要安装到 D盘的X文件夹下
如果必须这样的 话 我怎么才能使程序可以安装到 B电脑的 C盘X文件夹下
看你写程序是是否用了绝对路径(就是说调用文件是固定路径的),相对路径不存在你说的问题,bde可以安装到任意目录的
,相对路径例如ExtractFilePath(Application.ExeName);
我用的是绝对路径
您的意思是 在 FORM CREATE的时候给TABLE等付值?》
绝对路径,那就要安装到指定的目录了;
相对路径,安装在任何目录下都可以;BDE的连接方式还要配置ODBC才可以,建议选择ADO+相对路径,方便一些。
把绝对路径改成相对路径,不然指定A电脑的D盘X文件下,安装在B电脑,路径要一样的,你用的什么数据库?程序中动态配置数据库,路径用相对路径,就能达到(原代码等文件在A电脑的D盘X文件下
使程序可以安装到 B电脑的 C盘X文件夹下)这个目的
http://www.enet.com.cn/article/2004/0320/A20040320296087.shtml
用installshield就可以的,制作安装文件过程中有些设置配好了就行了
使用delphi自带的installshield就可以把bde数据引擎打包,安装在program files目录即可
BDE 安裝系統文件夾即可,就不用再考慮路徑的問題了。
17. 06.
比较大的库,用sql server,不是那种小的桌面型的。
是否会利用本地表,效率如何?
如果用,如何将本地表的数据提交到数据库,包括多表提交
一般不会吧?这不是自己给自己增加麻烦吗???
通常不会,可以在服务器上实现为何要用本地表呢
难道大型的数据库的功能还及不上本地表?
没必要,除非你想保留一些个性化的数据
如果不考虑网络不正常的情况,用不到本地数据库
谢各位,我也这么认为。但是无法说服项目负责人,他一定要用本地表,说和数据库交互频繁影响性能
我现在属于知其然不知其所以然,急切需要进一步提高,希望各位有什么好想法说说
兄弟這誰說得清啊。
項目負責人如果是技術出生就應該有他的確切理由。
如果某些數據量大的基本資料放在本地那肯定效率要高很多。這要看情況的
git为什么好于cvs/svn
但是,也需要看具体的需求:跨地区,有分中心服务器。。。。。。。
16. 06.
DBGridEh 排序之后,每次排序焦点都会自动指定到第一行,排倒序时,焦点会自动跟随第一行到最后。
怎么能让 DBGridEh 排序时 不自动把焦点落到第一行, 或者在排倒序的时候把焦点落到最后一行在排序。
应该是当前排序列的第一行吧.不知你想要怎样.
恩,比如我按标题栏之后,光标在第一行,再按一下之后,光标就到最后一行,DBGridEh 也显示最后的几行。。。
我就是想在排序按下标题按钮时不让DBGridEh自动把焦点放上去。这样DBGridEh就只会只显示最上面的几行,而不是光标在哪里,DBGridEh 就自动跟随显示到哪里。
哪位大哥帮帮小弟
周六也没人?
先取后当前行的主键值,排序之后locate
先取得排序前光标当前字段值
然后
Locate(列名,字段值,[loCaseInsensitive]) ;
对哦,排序后再LOCATE
即时用了locate后,你的光标在哪,DBGridEh的焦点也会跟随你的光标
这个无法解决!!你点击了什么控件,那它肯定获得焦点,获得焦点,那它必定停在有记录的头行中
除非程序控制停在某一行上
要么你就要用BookMark,原来停在哪一行就再定位回哪一行
16. 06.
一个bitbtn 一个richedit,一个 opendialog
按钮的单击事件:OpenDialog1.Execute;
opendialog 的filter属性设置:txt|*.txt
我想把打开后的文本导入到richedit中并且richedit只能支持下面的格式
例:
adsflkj544645 adkljwn454
中间的空格为Tab 键!
但说导入是很简单的,直接RichEdit1.Lines.LoadFromFile('文件路径')即可
如果还要限制导入的文本格式,那就先读文本,然后逐行判断是否符合要求,符合则添加
也可以一次性导入到RichEdit,然后逐行删除不符合格式的行
两个richedit,一个用来判断,一个用来显示,如楼上所说
你這沒什麼格式吧。只是#9 Tab 那你載入時遍曆下不可見字符除了#10#13#9 其它都是非法。
可能是我说的还不够详细吧, 一个 按钮 单击事件 完成 打开文本,指定格式添加到richedit1里面
二楼说的方法也可以,具体实现代码应该如何写呢?
16. 06.
各位大侠,我用 sqlserver语句备份数据库发现一个奇怪问题
语句如下:
qrystr:=' BACKUP DATABASE lsy TO disk='''+tempstr+''''+' with init,stats';
qrystr:='use master restore database lsy from disk='''+tempstr+''''+' with Replace ';
现在的问题是
我将 数据库lsy 备份好后
从数据库lsy 中删除一个表yz
然后恢复数据库,按道理数据库中应有表yz
但是没有,想不通
谢谢
不是
贴完整点的代码
才好分析
首先谢谢您的帮助
procedure Tsjwh.BitBtn1Click(Sender: TObject);
var qrystr,tempstr:string;
begin
if trim(bftx1.Text)=''
then
begin
messagebox(handle,pchar('请先输入备份数据库目录!'),pchar('信息!'),64);
bftx1.SetFocus;
end
else
begin //1
qrystr:='';tempstr:='';
tempstr:=trim(bftx1.Text);
qrystr:=' BACKUP DATABASE lsy TO disk='''+tempstr+''''+' with init,stats';
adotemp.Close;
adotemp.SQL.Clear;
adotemp.SQL.Add(qrystr);
try
adotemp.ExecSQL;
messagebox(handle,pchar('数据库备份成功!'),pchar('信息!'),64);
except
messagebox(handle,pchar('备份数据库失败!'),pchar('信息!'),64);
end;
end;//1
end;
procedure Tsjwh.BitBtn3Click(Sender: TObject);
var qrystr,tempstr,tempstr1:string;
len:integer;
kg:integer;
begin
kg:=0;
kg:=messagebox(handle,pchar('您确定恢复数据库吗?'),pchar('是否恢复?'),mb_yesNo+mb_iconquestion+mb_defbutton2);
if kg=6
then
begin // 恢复1
if trim(hftx1.Text)=''
then
begin
messagebox(handle,pchar('请先输入备份数据库的目录!'),pchar('信息!'),64);
hftx1.SetFocus;
end
else
begin //1
qrystr:='';tempstr:=''; tempstr1:='';
tempstr:=trim(hftx1.Text);
len:=0;
len:=length(tempstr)-3;
tempstr1:=copy(trim(hftx1.Text),len,4);
if tempstr1 <>'.bak'
then
begin //11
messagebox(handle,pchar('请输入有效的数据库文件!'),pchar('信息!'),64);
hftx1.SetFocus;
end//11
else
begin //22
tempstr:=trim(hftx1.Text);
qrystr:='use master restore database lsy from disk='''+tempstr+''''+' with Replace ';
adotemp.Close;
adotemp.SQL.Clear;
adotemp.SQL.Add(qrystr);
try
adotemp.ExecSQL;
messagebox(handle,pchar('数据库恢复成功、重新启动程序!'),pchar('信息!'),64);
main.close;
except
messagebox(handle,pchar('恢复数据库失败!'),pchar('信息!'),64);
end;
end;//22
end;//1
end;//恢复2
end;
15. 06.
我在使用virtualstringtree控件时,用到了它的指定单元格的edit功能,在createEditor后,进入编辑框内,但是在编辑时我想对键盘输入的字符进行过滤,不能输入类似"/,*,"等字符,该如何往下进行,希望大家多多指教,先谢了!
在你create的Editor的KEYDOWN和CHANGE事件中过滤啊
谢谢楼上,但是创建的editor的keydown事件要自己写吗?我找不到这个。
很显然得要自己写
15. 06.
有没有那个API控制D3D渲染的帧数的?控制画面每秒帧数的…
有知道的朋友麻烦说下,,谢谢了
越多越好…一切相关的API
自己控制用Sleep,或者你建立设备前将D3DPRESENT_PARAMETERS.PresentationInterval设为D3DPRESENT_INTERVAL_ONE,这样每秒的帧数就等于显示器的刷新率,如果你的程序没有画大量的三角形的话。
不是的.~~我是想修改某软件画面每秒的刷新频率…不知道该从哪些API入手…
望指教
这个不懂了。
15. 06.
C#调用代码:
TcpChannel tc= new TcpChannel();
ChannelServices.RegisterChannel(tc);
remoteObject = (MyRemotableObject)Activator.GetObject(typeof(MyRemotableObject), "tcp://localhost:8080/HelloWorld");
textBox2.Text= remoteObject.SetMessage(textBox1.Text);
DELPHI如何实现调用呀?
知道怎么调用了但是就是报错
INVALID UNICODE CHARACTER!
WS:= (HTTPRIO1 as MyRemotableObjectPortType);
s:= ws.SetMessage('avshapek');
ws应该是TFMessageWindow型的变量吧
编码不对?
好象是的,怎么处理呀?
好像有老外写了一套组件可以用。
15. 06.
各位好,我想了解Delphi 未来发展,Delphi2009的以实现怎么样的开发,公司原用Delphi开发,现在要求我们去学C#,说要换开发工具,
真不知道为什么,Delphi的未来如何?我真不想离开这个开发工具,请各位说说吧!
web开发是趋势,哎,真是个阿斗啊。。。。。。。。。。。
不如此认为
VISTA和WIN7是趋势,那又如何。。。还是有绝大多数客户 <不管是正版还是盗版>在用WINXP
为什么?WIN XP满足客户需求,不仅仅是客户出不起升级VISTA/WIN7的钱
不是一切应用都适合或擅长在WEB里
C/S的应用多过B/S,这应该是现状,甚至未来几十年都如此,再未来就不知道了,世界变化、革命性技术很多
各有各的应用市场,不存在谁是趋势之说
恩,luckyrandom 说的对,未来还是一个求知数,
C/S的确有不如B/S的地方:如直接连数据库,版本更新(应该容易解决),通讯协议不如http(s)通行
但是,改为Client/WebServer,就是集中两者的优点了:
http://blog.csdn.net/sz_haitao/archive/2009/05/15/4190602.aspx
不过,本话题是delphi的前途,如果没有安德森这样的人,估计是很难有起色的了
——连这个问题也解决不了或不屑解决:http://topic.csdn.net/u/20090603/20/a3bc6025-a3da-414a-a43f-96a3aba8490a.html