1

我来这里之前搜索了互联网。我想每个人的需求都不一样。我想要一个 Windows GUI 程序,它可以从数据库中获取信息并将其显示在网格中,并且每条记录旁边都有一个删除按钮。我还希望它有一个链接,例如,如果单击记录的 ID 号,它会打开新浏览器并导航到与之关联的页面,并完成表单然后自行提交。

问题是:既然有很多模块,哪一个最适合这个?

(Perl 努比)

4

3 回答 3

3

没有人能真正说出什么是最好的,但是 Tk 在你的情况下,带有后端的模块选项DBD::MySQL可能是 Perl 中此类事情的最“标准”。两者的例子都可以在网上找到。

下面是一些使用 mySQL 和 DBD 的 SQL:

http://sql-info.de/mysql/examples/Perl-DBI-examples.html

这是一个很好的 perl TK 示例文档:

http://www.ibm.com/developerworks/aix/library/au-perltkmodule/index.html

至于打开浏览器 - 一个简单的系统命令就可以了:

my @command = ('start', $url);
system(@command);

^这适用于 Windows。看起来您想要构建一个相当大的应用程序 - 打开浏览器只是其中的一小部分 - 毫无疑问,您将希望在按下按钮时执行上述操作。

最后一部分...向网络上的表单提交数据,是一个名为“网络爬虫”的主题... WWW::Mechanize 是一个值得研究的库 - 谷歌“perl网络爬虫”,你一定会得到更多好的例子。

我通过一些搜索找到了这个 - 它看起来对你有用:

http://www.stratos.me/2009/05/writing-a-simple-web-crawler-in-perl/

于 2012-06-20T14:47:20.040 回答
3

给一个(讨厌的)前提条件,大约。25 行 HTML

<html>
 <head>
  <hta:application id="demo" scroll="No"></hta>
  <title>Demo</title>
  <script language = "PerlScript"
          src      = "demo.pl"
          type     = "text/perlscript"
  ></script>
 </head>
 <body onload="DoOnLoad()" onunload="DoOnUnLoad()">
  <object classid = "clsid:67397AA3-7FB1-11D0-B148-00A0C922E820"
          id      = "id_oDC"
          style   = "position:relative;width:1px;height:1px"
  ></object>
  <object classid = "clsid:CDE57A43-8B86-11D0-B3C6-00A0C90AEA82"
          id      = "id_oDG"
          style   = "position:relative;width:100%;height:95%"
  ></object>
 </body>
</html>

和约。40 行 Perl:

use strict;
use warnings;

use Win32::OLE qw( in );
use Win32::OLE::Const 'Microsoft ActiveX Data Objects';
use vars qw( $window );

my $oAdoDC;
my $oAdoDG;

sub DoOnLoad {
  my $owda                    = $window->document->all;
  $oAdoDC                     = $owda->id_oDC;
  $oAdoDC->{ConnectionString} = 'DSN=SakilaGent';
  $oAdoDG                     = $owda->id_oDG;
  $oAdoDC->{CursorType}       = adOpenKeyset;
  $oAdoDG->Font->{Name}       = "Arial";
  $oAdoDG->Font->{Size}       = "8";
  $oAdoDG->HeadFont->{Name}   = "Arial";
  $oAdoDG->HeadFont->{Size}   = "8";
  $oAdoDC->{RecordSource}     = "select * from customer";
  $oAdoDG->{Caption}          = $oAdoDC->{RecordSource};
  $oAdoDC->Refresh();
  $oAdoDG->{DataSource}       = $oAdoDC;
}

sub DoOnUnLoad {
  $oAdoDG->{ DataSource }->Close();
  $oAdoDC->{ Recordset }->Close();
  $oAdoDG = undef;
  $oAdoDC = undef;
}

将为您提供灵活的“显示/编辑 ADO 可访问的每个数据库中的每个记录集”类型的数据网格:

ADO 网格

免费。熟悉 HTML(但不是 Tk 或 Wx)和 ADO/Access/Excel(但不是 DBI)的人可以轻松/有效地构建一个漂亮的数据库 GUI。前提条件(即缺点)是:即使部署计算机也需要具有“Microsoft DataGrid Control 6.0 (OLEDB)”(也有普通表格、分层和灵活的分层网格控件;也许可以使用更现代的控件也)以开发/设计时启用模式安装。

于 2012-06-24T16:13:38.200 回答
2

我建议使用:

由于您使用的是 Windows,因此最好的办法是安装包含 SQLite 和 Mechanize的Strawberry Perl 。安装 Wx 或 Tk 是一个额外的步骤,但您应该能够在网络上从其他这样做的人那里找到教程。您可能还想查看Padre,这是一个 Perl IDE,它是一个 Perl 编辑器/开发环境(它也恰好使用 Wx)。

于 2012-06-23T12:12:21.757 回答