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; }