PDA

Visualizza la versione completa : [perl] ODBC scorrere recordset


wackyrace
08-04-2010, 13:53
Ciao ho uno strano problema:



use Win32::ODBC;

my $db = new Win32::ODBC( $DSN ) || die "Error: " . Win32::ODBC::Error();
$db->Sql($QuerySql);

while( $db->FetchRow() )
{
my @sotto_array = $db->Data();

#CODICE FUNZIONANTE
$i=0;
$$TabQueryHtml .= "<td>". $sotto_array[$i] ."</td>";
$i=1;
$$TabQueryHtml .= "<td>". $sotto_array[$i] ."</td>";


#CODICE ERRATO
for $y(0..$#sotto_array) {
$$TabQueryHtml .= "<td>". $sotto_array[$y] ."</td>";
}
}


Il codice da problemi nella valutazione di $sotto_array[$y] se metto un numero al posto di $y viene eseguito correttamente atrimenti no.

Grazie

wackyrace
08-04-2010, 15:28
#!c:/Perl/bin/perl.exe -w
$testo = "table";
sub usb_FunzioneRiferimento(){
my $stringainterna = @_;
${$stringainterna} = "pippo";
}

&usb_FunzioneRiferimento(/\$testo); #lo slash girato al contrario in quanto il codice postato nel forum viene cancellato

print "Content-Type: text/html\n\n";
print $testo;


Sono riuscito ad isolare il problema sul passaggio per riferimento di una stringa.
Questo codice da errore.

Per gli array e gli hash basta mettere lo slash. Per la stringa?

Grazie

wackyrace
08-04-2010, 15:54
Ho scoperto il secondo problema.

----------------------------------------
invece di:
my $stringainterna = @_;
----------------------------------------
bisogna mettere:
my ($stringainterna) = @_;
oppure
my $stringainterna = shift;
oppure
my $stringainterna = @_[0];
----------------------------------------

wackyrace
08-04-2010, 16:37
Ciao ho scoperto anche il primo problema:


while( $db->FetchRow() )
{
my @sotto_array = $db->Data();

#CODICE FUNZIONANTE
$i=0;
$$TabQueryHtml .= "<td>". $sotto_array[$i] ."</td>";
$i=1;
$$TabQueryHtml .= "<td>". $sotto_array[$i] ."</td>";


#CODICE FUNZIONANTE
for $y(0..$#sotto_array) {
if ($sotto_array[$y])
{
$$TabHtml .= "<td>$sotto_array[$y]</td>";
}
else
{
$$TabHtml .= "<td></td>";
}
}
}

$sotto_array punta ad un recordset e quando trovava un campo null non riusciva a inserirlo nella stringa.


Grazie a tutti :-)

Loading