From: Eric H. <eh...@co...> - 2006-02-02 15:45:06
|
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.=20 =20 sub ListView_ItemClick { =20 my $ls_text=3D""; #-- ls for local scalar my $ls_ret=3D""; my $ls_error=3D""; my $ls_index=3D""; my $ls_sqltxt=3D""; my %lh_data=3D(); #-- lh for local hash =20 $gs_item =3D shift; #-- gs for global scalar =20 $ls_ret =3D Open_Database(); if ($ls_ret) {return 1;} =20 %lh_data =3D $LV->ItemInfo($gs_item,36); #-- record index =20 $ls_index =3D $lh_data{-text}; =20 =20 $ls_sqltxt=3D"SELECT Comments, [In House Comments], [Analysis Proposed Fix], Issue FROM Tracker WHERE Index =3D $ls_index";=20 =20 $ls_ret =3D $gs_db->Sql($ls_sqltxt); =20 If ($ls_ret) { $ls_error=3D$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;=20 } =20 $gs_db->FetchRow(); =20 $ls_text =3D $gs_db->Data("Comments"); $TF_Comments->Text($ls_text);=20 $ls_text =3D $gs_db->Data("Analysis Proposed Fix"); $TF_ProposedFix->Text($ls_text);=20 $ls_text =3D $gs_db->Data("In House Comments"); $TF_InHouse->Text($ls_text);=20 $ls_text =3D $gs_db->Data("Issue"); $TF_Issue->Text($ls_text);=20 =20 Close_Database(); =20 #-- additional code for the event follows but not shown here } =20 sub Open_Database() { =20 my = $ls_FILEDSN=3D"FILEDSN=3D$gs_cwd\\Tracker.dsn;PWD=3DWin32Gui102";=20 =20 #-- we don't want to show password if an error occurs so use this string as error msg my $ls_FILEDSN2=3D"FILEDSN=3D$gs_cwd\\Tracker.dsn";=20 =20 $gs_db =3D new Win32::ODBC($ls_FILEDSN);=20 =20 if (! $gs_db) { my $ls_error=3DWin32::ODBC::Error(); Win32::GUI::MessageBox($W,=20 "Can't Establish Database Connection using:\n$ls_FILEDSN2\n$ls_error",=20 "CPS Issue Tracker - Error",16,); return 1; =20 }=20 return 0; } =20 sub Close_Database() { $gs_db->Close(); =20 undef $gs_db; } =20 =20 |