Here is how I populate my textfields on my maintenance screen when a
user clicks a ListView item.
The index to the record in the database is stored as the last column in
each ListView row so I can
Use it to quickly/easily lookup the database row to fetch the memo
fields in their entirety.
sub ListView_ItemClick {
my $ls_text=""; #-- ls for local scalar
my $ls_ret="";
my $ls_error="";
my $ls_index="";
my $ls_sqltxt="";
my %lh_data=(); #-- lh for local hash
$gs_item = shift; #-- gs for global scalar
$ls_ret = Open_Database(); if ($ls_ret) {return 1;}
%lh_data = $LV->ItemInfo($gs_item,36); #-- record index
$ls_index = $lh_data{-text};
$ls_sqltxt="SELECT Comments, [In House Comments], [Analysis
Proposed Fix], Issue FROM Tracker WHERE Index = $ls_index";
$ls_ret = $gs_db->Sql($ls_sqltxt);
If ($ls_ret) {
$ls_error=$gs_db->Error(); #-- get database error msg
Close_Database();
Win32::GUI::MessageBox($W,$ls_error, "CPS Issue Tracker -
Maintenance Screen - SQL Error($ls_ret)",16,);
Win32::GUI::MessageBox($W,$ls_sqltxt,"CPS Issue Tracker -
Maintenance Screen - SQL Cmd",16,);
Win32::GUI::MessageBox($W,"Can't Get Memo Fields From
Database", "CPS Issue Tracker - Maintenance Screen",64,);
return 1;
}
$gs_db->FetchRow();
$ls_text = $gs_db->Data("Comments");
$TF_Comments->Text($ls_text);
$ls_text = $gs_db->Data("Analysis Proposed Fix");
$TF_ProposedFix->Text($ls_text);
$ls_text = $gs_db->Data("In House Comments");
$TF_InHouse->Text($ls_text);
$ls_text = $gs_db->Data("Issue");
$TF_Issue->Text($ls_text);
Close_Database();
#-- additional code for the event follows but not shown here
}
sub Open_Database() {
my $ls_FILEDSN="FILEDSN=$gs_cwd\\Tracker.dsn;PWD=Win32Gui102";
#-- we don't want to show password if an error occurs so use this
string as error msg
my $ls_FILEDSN2="FILEDSN=$gs_cwd\\Tracker.dsn";
$gs_db = new Win32::ODBC($ls_FILEDSN);
if (! $gs_db) {
my $ls_error=Win32::ODBC::Error();
Win32::GUI::MessageBox($W,
"Can't Establish Database Connection
using:\n$ls_FILEDSN2\n$ls_error",
"CPS Issue Tracker - Error",16,);
return 1;
}
return 0;
}
sub Close_Database() {
$gs_db->Close();
undef $gs_db;
}