免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1763 | 回复: 3
打印 上一主题 下一主题

我写的这个小程序为什么只有一半,另一半去哪里了? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-10-14 17:47 |只看该作者 |倒序浏览
自己写了个小程序,想把表头和表内容显示分开,但现在只能显示表头,表内容不见了。为什么?

test.pl

BEGIN {

        if( !defined( $ENV{IMS_ROOT} ) ) {

                $IMS_ROOT        = "/".$0;
                $IMS_ROOT        =~ s/\\/\//g;
                $IMS_ROOT        =~ s/\/config.*//;
                $IMS_ROOT        =~ s/^\///;
                if( $IMS_ROOT eq "" ) {
                        $IMS_ROOT        = ".";
                }
        } else {
                $IMS_ROOT        = $ENV{IMS_ROOT};
        }

        if( !defined( $ENV{IMS_URL_BASE} ) ) {

                $IMS_URL_BASE        = "/SICADIMS";

        } else {

                $IMS_URL_BASE        = $ENV{IMS_URL_BASE};

        }

        chdir $IMS_ROOT;
        unshift( @INC, "Scripts", "lib" );
}

# CGI 程序

use CGI;
$Query = new CGI;
print $Query->;header;
print $Query->;start_html("生产运行管理系统 - 热源故障记录";
print '<H1>;<CENTER>;<font size="3">;*', "热源检修记录", '*</CENTER>;</H1>;';
print 'haha';


##表名: TEST
$table="TEST";

###导入表头文档,路径末尾必须加符号\\
$path = "D:\\SICAD\\sicad-is41\\isserver\\config\\datasources\\rlgw\\Scripts\\table_title_control\\";
#push (@INC,$path);

unshift(@INC,$path);

# import file title.pl
require "table_title.pl";
print $biaoming::tt;
biaoming::title($table);
#title::title(); bon 无参数的函数


#表内容显示
$sql="select xm,age from test";
$Db->;Sql($sql);

$num=0;
while( defined ($Db->;FetchRow()) )
        {
                @values = $Db->;Data;
                $matrix_result{$num}=[@values];        # Matrix with references!
#                $matrix_result{$values[0]}=[@values];        # Matrix with references!  这个SQL语句是不对的,不能这么写{$values[0]}
                $num=$num+1;
        }
#$Db->;Close();



#表内容显示
for ($id=0;$id<$num;$id++)
{
        print '<TR>;';       
        if( defined( $matrix_result{$id} ) )
        {
                foreach $result ( @{$matrix_result{$id}} )
                {       
                        print'<TD ALIGN=center height="20">;';
                        print $result;
#                        print '1';  用于测试
                        print '</TD>;';
                }
           print "</TR>;\n";
        }# 与if配合
}#与for配合

print '</TABLE>;</CENTER>;';

#print $num.'<br>;';
#print $sql.'<br>;';

table_title.pl

#调用子程序
#date:2004.10.14

#子程序
package biaoming;
#sub title($a)  带参数的不能这么书写
sub title
#sub title()  BON
{

use Win32::ODBC;

$Db = new Win32::ODBC("DSN=IMSOA;UID=ZZRLOAWD=lss";
if (defined $Db)
{
#        Win32::ODBC:umpError();
}
$tt='TEST';

#表头显示
$sql_title="select comments  from user_col_comments where table_name='$_[0]'";

#$sql_title="select comments  from user_col_comments where table_name='TEST'";  bon

$Db->;Sql($sql_title);

$count=0;
while( defined ($Db->;FetchRow()) )
        {
                @values = $Db->;Data;
                $matrix_result_title{$count}=[@values];        # Matrix with references!
                $count=$count+1;
        }


print '<style type="text/css">;';
print '.text {  font-size: 10pt}';
print '.small {  font-size: 12px}';
print '.big { font size:25:px}';
print '.sb {font size:14px; color:#000000}';
print '.text1 {  font-size: 10pt;text-align: justify}';
print '.text2 {  font-size:11pt;font-weight: bold}';
print '.text3 {  font-size:9pt;color:#990000;font-weight:bold}';
print '.low { font-size:9pt;color:#666666;font-weight:bold}';
print 'A:link {COLOR: #333333; TEXT-DECORATION: none}';
print 'A:hover {COLOR: #6600ff! important; TEXT-DECORATION: underline! important}';
print 'A:visited {COLOR: #333333; TEXT-DECORATION: none}';
print '</style>;';

print "<CENTER>;<TABLE border='1' class=small bordercolorlight='#000000' cellspacing='0' cellpadding='0' bordercolordark='#FFFFFF'>;";

#表头显示(可以将表头显示做为一个函数,在任何程序中都可以调用)

print '<TR>;';       
for ($id=0;$id<$count;$id++)
{
        if( defined( $matrix_result_title{$id} ) )
        {
                foreach $result ( @{$matrix_result_title{$id}} )
                {       
                        print'<TH bgcolor="#C0C0C0" height="20">;';
                        print $result;
                        print '
;</TH>;';
                }
        }# 与if配合
}#与for配合
print "</TR>;\n";

print $Query->;end_html;
#print $Query->;h1("CGI模块测试"; //测试CGI的html输出
#print $Query->;end_html;

}

return 1;

表结构为:test
-- Create table
create table TEST
(
  XM  VARCHAR2(10),
  AGE NUMBER(5)
)

comment on column TEST.XM
  is '姓名';
comment on column TEST.AGE
  is '年龄';

为什么表里面的内容没有出来?只能显示表头的内容?????

XM        VARCHAR2(10)        Y                姓名
AGE        NUMBER(5)        Y                年龄




请高手帮帮小妹吧,我找了很长时间错误,都只有表头呢。
是不是我调用程序包里的函数时,程序中断了?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-10-14 18:07 |只看该作者

我写的这个小程序为什么只有一半,另一半去哪里了?


  1. biaoming::title($table);

复制代码

這裡你就$Query->;end_html了..後面怎麼會有結果??

另外你的代碼..有點混亂...挺難抓bug的

论坛徽章:
0
3 [报告]
发表于 2004-10-18 09:08 |只看该作者

我写的这个小程序为什么只有一半,另一半去哪里了?

非常感谢你的建议,谢谢你这么有耐心看我写的代码。
你可以告诉我怎么写才能看着清晰和简捷吗?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2004-10-18 09:56 |只看该作者

我写的这个小程序为什么只有一半,另一半去哪里了?

只是一點個人意見罷了..你看看就好...
------------------------------

print <<XXXX;
XXXX
這樣的語法...
比起print ' ';寫個十多行..來得簡潔...而且也比較容易追蹤bug..

另外table頭尾儘量不要分開寫...
<table>;..跟content(<tr>;</tr>;)最好是可以寫在一起...
如果不行..也只要將content分離出去...
只是你的SQL部分看起來..你連title的部分都是dynamic的...
從我的角度來看...這似乎沒有必要..
但是看你的註釋..你有你的考量..也不能說你不對...
只是我很少寫單純只打印整個table的代碼...通常還
要東加一點、西加一點的..

多用my 少宣告點global variable...代碼一長...
global variable會變成隱藏的bug...

寫代碼...累積經驗是最要緊的....別人講再多也沒用...:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP