作者iFEELing (ing)
看板Perl
标题[问题] Perl -> Win32::ODBC -> Access MDB
时间Wed Nov 21 21:57:03 2007
是这样的 因为某些历史包袱 现在小弟得用 Perl -> ODBC -> Access MDB 的方式
存取资料
需要存取的 MDB 里面有五六个表格
在google之後 有找到使用 Win32::ODBC 的方式
可是 下 select * from 表格 之後 回来的record 数目 跟 mdb 里实际的资料数不合
大概是这样的情况
表格 A B C D
资料笔数 24 4000 120 20
select *
回来的笔数 20 2 120 20
表格 A 是目前第一步要查询的资料 里面有 五栏 共 24 笔资料
(编号,名称,数量,安全存量,是否下订)
可是 表格 A 如果下的是 " select * from 表格 " 回来的笔数有 20 笔
如果下的是 "select * from 表格 order by 编号" 回来的笔数却只有12笔
而且 以 " select * from 表格 where 数量 < 安全存量 " 查询的话
在前12笔记录 也就是 select * 会回来的那12笔里 符合条件的都会被查到
但是另外的12笔就好像消失一样 完全看不到
想请教这个可能是哪边的设定有误需要调整呢? 在此先谢过m(_._)m
附上code
========
#!c:\perl\bin\perl.exe -w
use Win32::ODBC;
$dsn = "cart";
$table = "表格A";
# ====== Check if the database can be opened correctly
if (!($db = new Win32::ODBC($dsn))) {
print "Error in opening DSN \"$dsn\"!\n";
print "Error: " . Win32::ODBC::Error(). "\n";
exit;
}
# ====== Select all fields from the given table
#$sql = "select B_name from $table;";
#$sql = "select * from $table order by Category;";
$sql = "select * from $table;";
# ====== Check if the SQL query is correct
if ($db->Sql($sql)) {
print "Error in SQL query: \"$sql\"!\n";
print "Error: " . $db->Error() . "\n";
$db->Close();
exit;
}
# ====== Print field data
print "Content-type: text/html\n\n";
print "<html><body><pre>\n";
$count = 1;
@FieldNames = $db->FieldNames();
while ($db->FetchRow()) {
print "Record $count\n";
# ($newsSiteID, $classID) = $db->Data("newsSiteID", "classID");
# undef %Data;
%Data = $db->DataHash();
foreach $x (@FieldNames) {
if(!defined($x))
{$x='NOT';}
print "$x: $Data{$x}\n";
}
print "\n";
$count++;
}
$db->Close();
print "</pre></body></html>\n";
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.134.36.154
1F:推 qerter:有点要转MySQL的哀伤 11/27 03:20