use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
BEGIN {
- $VERSION = 3.07.00.049; # set version for version checking
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(
$sth->execute($frameworkcode);
my $data;
while (my $hashRef = $sth->fetchrow_hashref) {
- for (@fields) {
- $hashRef->{$_} =~ s/[\r\n]//g;
- $$strCSV .= '"' . $hashRef->{$_} . '",';
+ for my $field (@fields) {
+ my $value = $hashRef->{$field} // q||;
+ $value =~ s/[\r\n]//g;
+ $$strCSV .= '"' . $value . '",';
}
chop $$strCSV;
$$strCSV .= chr(10);
$data = $hashRef->{$_->{name}};
if ($_->{type} eq 'float' && !defined($data)) {
$data = '0';
+ } elsif ($_->{type} eq 'string' && !defined($data)) {
+ $data = q{};
} elsif ($_->{type} eq 'string' && (!$data && $data ne '0')) {
$data = '#';
}
$data = $hashRef->{$_->{name}};
if ($_->{type} eq 'Number' && !defined($data)) {
$data = '0';
+ } elsif ($_->{type} eq 'String' && !defined($data)) {
+ $data = q{};
} elsif ($_->{type} eq 'String' && (!$data && $data ne '0')) {
$data = '#';
}
seek($dom, $pos, 0);
return 1;
}
- if (scalar(@$fields) == scalar(@arrData)) {
- if (!$fieldsNameRead) {
- # New table, we read the field names
- $fieldsNameRead = 1;
- for (my $i=0; $i < @arrData; $i++) {
- if ($arrData[$i] ne $fields->[$i]) {
- $fieldsNameRead = 0;
- last;
- }
- }
- if ($fieldsNameRead) {
- $fieldsStr = join(',', @$fields);
- $dataStr = '';
- map { $dataStr .= '?,';} @$fields;
- chop($dataStr) if ($dataStr);
- $updateStr = '';
- map { $updateStr .= $_ . '=?,';} @$fields;
- chop($updateStr) if ($updateStr);
- }
- } else {
- # Read data
- my $j = 0;
- my %dataFields = ();
- for (@arrData) {
- if ($fields->[$j] eq 'frameworkcode' && $_ ne $frameworkcode) {
- $dataFields{$fields->[$j]} = $frameworkcode;
- $arrData[$j] = $frameworkcode;
- } else {
- $dataFields{$fields->[$j]} = $_;
- }
- $j++
+ if (!$fieldsNameRead) {
+ # New table, we read the field names
+ $fieldsNameRead = 1;
+ $fields = [@arrData];
+ $fieldsStr = join(',', @$fields);
+ $dataStr = '';
+ map { $dataStr .= '?,';} @$fields;
+ chop($dataStr) if ($dataStr);
+ $updateStr = '';
+ map { $updateStr .= $_ . '=?,';} @$fields;
+ chop($updateStr) if ($updateStr);
+ } else {
+ # Read data
+ my $j = 0;
+ my %dataFields = ();
+ for (@arrData) {
+ if ($fields->[$j] eq 'frameworkcode' && $_ ne $frameworkcode) {
+ $dataFields{$fields->[$j]} = $frameworkcode;
+ $arrData[$j] = $frameworkcode;
+ } else {
+ $dataFields{$fields->[$j]} = $_;
}
- $ok = _processRow_DB($dbh, $db_scheme, $table, $fieldsStr, $dataStr, $updateStr, \@arrData, \%dataFields, $PKArray, \@fieldsPK, $fields2Delete);
+ $j++
}
+ $ok = _processRow_DB($dbh, $db_scheme, $table, $fieldsStr, $dataStr, $updateStr, \@arrData, \%dataFields, $PKArray, \@fieldsPK, $fields2Delete);
}
$pos = tell($dom);
}