小编Cap*_*fka的帖子

如何遍历MS Access DB中的所有表

我需要读取Access 2003数据库中超过100个表的属性,并将这些详细信息 - 表名,字段名,类型和大小 - 写入文件以获取进一步的文档.

我无法通过网络搜索找到有关阅读字段属性,只是字段值...

有人可以告诉我,我必须声明什么记录集变量(和语法)循环数据库中的所有表,并从每个表中提取字段名称,类型和大小?我将结果写入文本文件,但我想我可以处理!:)

我陷入停顿,直到我能解决这个问题.我花了一天时间手动记录两张表.有些表格有100多个字段.

ms-access access-vba

16
推荐指数
2
解决办法
5万
查看次数

Delphi - 引用在运行时创建的组件

我正在使用Delphi 5,我在运行时创建了许多面板,然后在面板上创建按钮,显然在运行时再次创建.我需要这样做,因为我可能需要在将来动态创建更多的面板/按钮组合.

我可以做到这一切,但我不知道如何引用我创建的面板,因为我找不到访问面板组件名称的方法.在互联网上狩猎我发现我可以使用FindComponent按名称查找面板组件,但我仍然不知道如何使用该名称,因为我不能使用字符串变量来引用它 - 例如StringVar := Panel.Name.我得到一个类型不匹配,TComponentName与String.

我在创建面板时为每个面板创建了按钮.简化,它看起来像这样:

   With TypeQuery do begin // Create Panels
   First;
   While (not eof) do begin        // create the actual panel
      panelno := FieldByName('Product_type_id').AsInteger;
      pnl := Tpanel.Create(Self);
      pnl.name := FieldByName('PanelName').AsString;
      pnl.color := clInactiveCaption;
      pnl.parent := MainForm;
      pnl.width := 365;
      pnl.Height := 551;
      pnl.left := 434
      pnl.top := 122;
      pnl.caption := '';
      With ButtonQuery do begin
         Close;
         Parameters.parambyname('PanelID').Value := PanelNo;
         Open;
         First;
         While (not eof) and (FieldByName('Product_type_id').AsInteger = PanelNo) do begin    //put the buttons on it. …
Run Code Online (Sandbox Code Playgroud)

delphi components runtime reference

4
推荐指数
2
解决办法
1万
查看次数

Delphi ShellExecute在Windows 7中不起作用

我只知道这很简单,但我已经尝试了我在这个论坛上找到的所有建议,而且我仍然无法获得以下ShellExecute语句,这些语句在XP上工作了四年,在Windows中工作7.

任何建议都感激不尽!

ShellExecute(Handle, 'open', PChar('command.com'), PChar('/c ftp -s:c:\checkout\WebFTPParams.txt 91.208.99.4'), Nil, SW_SHOW);
ShellExecute(Handle, 'open', PChar('command.com'), PChar('/c ftp -s:c:\checkout\WWFTPParams.txt 212.78.232.39'), Nil, SW_SHOW);
Run Code Online (Sandbox Code Playgroud)

不管怎样,谢谢伙计,但我发现了问题.我应该一直在使用CMD.EXE而不是旧的Command.com.对不起,打扰你!

delphi shellexecute windows-7

2
推荐指数
1
解决办法
4727
查看次数

Delphi 5和Windows 7问题

这很奇怪.我现在在我全新的Windows 7 64位机器上安装了Delphi 5,更新到Service Pack 1.它看起来运行得很好,但是当我启动时会出现一条错误消息,告诉我系统无法将Delphi32.$$$重命名为Delphi32.dro.我想"好的"然后手动重命名,结果却发现没有Delphi32.$$$但是那里有很大的生命,是Delphi32.dro ......

我已登录到管理员级帐户,因此我认为这不是权限问题.

我愿意忍受这种轻微的烦恼,但我担心这是一些更深层次问题的症状.

有人遇到过这种情况么?

delphi delphi-5 windows-7

1
推荐指数
1
解决办法
5013
查看次数

不明显的Delphi语法错误

我有一些简单的代码问题我根本无法解决.我正在使用Delphi 5并应用了所有更新.

我有这个代码块:

procedure TForm1.LoadBtnClick(Sender: TObject);
var
   s1, s2, s3 : Textfile;
   sa, sb, RString, SQLString : string;
begin
  with sourcequery do begin
     Close;
     SQL.Clear;
     SQL.Add('delete * from source');
     ExecSQL;
     Close;
     AssignFile(S2, 'c:\delphi programs\events\source1.txt');
     AssignFile(S1, 'c:\delphi programs\events\source2.txt');
     Reset(s2);
     Reset(s1);
     while not eof(s1) do begin
        readln(s1, RString);
        SQLString := 'insert into source1(f1, f2) values(';
        SQLstring := SQLString+ QuotedStr(copy(Rstring, 1, pos(chr(9), Rstring)-1))+', ';
        SQLString := SQLString+QuotedStr(copy(Rstring, pos(chr(9),Rstring)+1,length(Rstring)))+')';
        with sourcequery do begin
           close;
           SQL.Clear;
           SQL.Add(SQLString);
           ExecSQL;
        end;
     end;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

但是当我尝试编译它时,它会在"eof("之后停止:

 while not …
Run Code Online (Sandbox Code Playgroud)

delphi text-files

0
推荐指数
1
解决办法
287
查看次数

FindComponent() 找不到组件

我创建了一个登录表单,其中包含与 Access 文件中保存的用户名相对应的按钮。按钮是在OnCreate事件中创建的,因为我不想每次显示屏幕时都必须创建它们。

按钮按预期显示,并且我创建了 LogOn 和 LogOff 过程,它们都按我的预期工作。

下一步是仅显示当前登录到系统的用户的按钮。为此,我在OnActivate事件中创建了以下代码:

procedure TUserInForm.FormActivate(Sender: TObject);
var
   btn : TLBButton;
begin
   With UserQuery do begin;
      first;
      while (not eof) do begin
         BtnName := FieldByName('UserName').AsString;
         Btn := TLBButton(FindComponent(BtnName));
         if (Btn <> nil) then
            if (FieldByName('LoggedIn').AsBoolean = True) then Btn.Visible := True else Btn.Visible := False;
         next;
      end;
   end;
end;
Run Code Online (Sandbox Code Playgroud)

但是,它没有找到任何按钮——它们都是nil. 如果我删除nil检查,代码将引发访问冲突异常。但是,在代码中的任何一点我都不会破坏按钮或表单本身。按钮存在,因为我可以在表单上看到它们。该BtnName变量在单元内是全局的。我已经检查过该BtnName变量是否从表中正确填充。

我以前使用过类似的代码来查找组件,没有任何问题。事实上,我从另一个运行良好的过程(有明显的变化)“窃取”了上面显示的代码。日志显示没有错误。

任何人都可以提出一些解决此问题的方法吗?这很令人沮丧!

delphi delphi-5

-1
推荐指数
1
解决办法
230
查看次数