ஏஎஸ்பி.நெட்
மனுஷ்யபுத்திரன் நடத்தும் உயிர்மை இதழை இணையத்திலும் படிக்க முடியும் என்பதை இன்றுதான் அறிந்து கொண்டேன். இதைப் படிப்பதற்கு அத்தளத்தில் உறுப்பினராகப் பதிந்துகொள்ள வேண்டும். இதற்கு கட்டணம் ஏதும் கிடையாது. இத்தளம் .நெட் தொழில்நுட்பத்திலேயே உருவாக்கப்பட்டுள்ளது.
இத்தளத்தில் ஒரு சிறு குறை, விண்ணப்பப்படிவத்தில் நம் பெயரைத் தமிழில் கொடுக்க முடியாது. ஆங்கிலத்தில்தான் கொடுக்க முடியும். டாட்நெட்டின் உள்ளமைந்த வேலிடேஷன் கண்ட்ரோல்களைக் கொண்டே பயனர் கொடுக்கும் விவரங்களைச் சரிபார்க்குமாறு அமைத்திருக்கிறார்கள். அவ்வகையில், பெயரைச் சரிபார்க்க, ரெகுலர் எக்ஸ்ப்ரஷன் கண்ட்ரோலைப் பயன்படுத்தி இருக்கிறார்கள். எனினும் இந்த கண்ட்ரோலின் வேலிடேஷன் எக்ஸ்ப்ரஷனாக ^[a-z A-Z]+$ என்று கொடுத்துள்ளார்கள். இதனால், ஆங்கில எழுத்துக்கள் மற்றும் வெற்றிடத்தைத் தவிர வேறு எந்த ஒரு எழுத்தையும் பெயரை உள்வாங்கிக்கொள்ளும் டெக்ஸ்ட்பாக்ஸ் அனுமதிக்காது.
எனவே, இந்த ரெகுலர் எக்ஸ்ப்ரஷனில் இத்தள நிர்வாகிகள் ஒரு சிறு மாறுதல் செய்தால் இப்பிரச்சனை சரியாகிவிடும். ^[a-z A-Z]+$ என்று இருக்கும் எக்ஸ்ப்ரஷனை, ^[a-z A-Z ஃ-ௗ]+$ என்று மாற்றிவிட்டால் போதும்,...
செந்தில்: அண்ணே, எனக்கு ஒரு சந்தேகம்ணே...
கௌண்டமணி: டெக்னிக்கலா எதாவது சந்தேகம்னா, கேளு. வேற ஏதாவது கோக்கு மாக்கா கேட்ட, அப்பறம் தலையயும் ஓம்மூஞ்சி மாதிரி மாத்திடுவேண்டா client feedback தலையா...
செந்தில்: அதில்லண்ணே... ASP.NETல இந்த timeout error எரர், timeout எரர்ன்னு ஒன்னு வருதே, அத எப்படின்னே சரி பண்றது?
கௌண்டமணி: அடேய் க்ளைன்ட் வாயா... இப்படி பொத்தாம்பொதுவா user மாதிரி எரர் ரிப்போர்ட் பண்ணினா எப்படிடா புரியும்? என்ன எரர்ன்னு முழுசா சொல்லுடா...
செந்தில்: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
டி. ராஜேந்தர்: யம்மா தங்கச்சி, எர்ரர் உருவாச்சி. வீட்டுக்கு நேரமாச்சி, வயிறும் தடுத்தாச்சி.
ஒனக்கு நெனவிருக்காம்மா... சின்ன வயசுல எஸ்க்யூஎல் சர்வரோட கனெக்ட் பண்ணி வெளயாடும்போது, டைம் ஔட் எர்ரர் வருது டைம் ஔட் எர்ரர் வருதுன்னு நீ சொல்லுவ, டைம் ஔட் value...
எக்சல் கோப்புகளை எக்சல் ஆப்ஜக்ட் பயன்படுத்தாமலேயே வெறும் OleDbConnectionனை மட்டும் வைத்துக்கொண்டே டாட்நெட் தொழில்நுட்பம் பயன்படுத்த முடியும், கீழ்க்கண்டவாறு:
OleDbConnection xlConn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\filename.xls;Extended Properties='Excel 8.0;'");
இதிலுள்ள ஒவ்வொரு சீட்டையும் ஒரு டேபிலாகப் படிக்கலாம்.
பிறகு டேபிளில் உள்ள வரிசைகளைப் படிக்க "select * from [sheet1$]" என்று அடாப்டரிலோ அல்லது கமாண்ட் ஆப்ஜக்டிலோ வினவளைக் கொடுக்கவேண்டியதுதான். இதில் ஒரு சிறிய பிரச்சனை என்னவென்றால் டேட்டாடைப்பை OleDbConnection புரிந்துகொள்ளும் விதம்தான். உதாரணமாக, எண்கள் மட்டும் இருக்கவேண்டிய ஒரு காலத்தில் (column) ஒரு எழுத்துச்சரத் தகவல் இருந்தது என்றால் அந்த தகவலை எடுத்துக்கொள்ளாமல் வெறும் null என்று அந்த இடத்தில் எடுத்துக்கொள்ளும். இதைத் தவிர்க்க, தகவல்தொடர்ப்புச் சரத்தில், IMEX=1 என்று சேர்த்துத் தரவேண்டும், கீழ்க்கண்டவாறு:
OleDbConnection xlConn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\filename.xls;Extended Properties='Excel 8.0;IMEX=1'");
க்ரிட்வ்யூ கன்ட்ரோலை ஒரு டேட்டா டேபிள்/டேட்டாசெட்டுடன் பைன்ட் பண்ணிய பிறகு, எண்கள் இருக்கும் columnகளின் (numeric datatype columns) அடியில் மட்டும் எண்களின் கூட்டுத்தொகையைக் காண்பிக்க வேன்டியிருக்கலாம். பைன்ட் பண்ணிய டேபிளைப் பற்றிய விவரங்கள் நமக்கு முன்னமேயே தெரிந்திருந்தால் datatable.Compute("sum(columname)") மெத்தடைப் பயன்படுத்தி சுலபமாக இதைச் செய்துவிடலாம். ஆனால் இதற்கு எவையெவையெல்லாம் எண்களின் அடிப்படையில் அமைந்த fields என்று நிரல் எழுதும்போதே தெரிந்திருக்கவேண்டும். அப்படி இயலாத நேரங்களில், எந்தெந்த fields எண் வகையைச் சார்ந்தது என்று இயங்குநேரத்தில் கண்டுபிடித்து பிறகு Compute மெத்தடைப் பயன்படுத்தி sumஐ காண்பிக்கவேண்டும்.
ஒரு க்ரிட்வ்யூவையும், டேட்டாடேபிளையும் ஆர்க்யுமென்டாகக் கொடுத்தால், தானாகவே இந்த வேலையைச் செய்யும் ஒரு சின்ன ஃபங்க்ஷன் இதோ:
private void GenerateFooterTotal(GridView gvResult, DataTable dtbl)
{
#region Total for number columns
//We cant compute the total by specifying the field name since we dont
//know...
சாதாரண டெக்ஸ்ட்பாக்சில் இத்தனை இத்தனை எழுத்துக்களுக்குமேல் உள்ளீடு செய்யக்கூடாது என்பதை MaxLength பண்பைக் கொண்டு சுலபமாக வரையறுத்து விடலாம். ஆனால் டெக்ஸ்ட் ஏரியாவில் இது சாத்தியமில்லை.
எனவேதான் asp:TextBox கண்ட்ரோலில் TextMode=MultiLine என்று கொடுத்துவிட்டு, MaxLength ப்ராப்பர்ட்டியில் எவ்வளவு அளவு கொடுத்தாலும் ப்ரௌசரில் பார்க்கும் பொழுது அது எடுபடுவதில்லை. எனினும் சில நேரங்களில் டெக்ஸ்ட் ஏரியாவினுள் தரப்படும் தகவல்களையும் கூட ஒரு குறிப்பிட்ட அளவுக்கு மேல் ஏற்றுக்கொள்ள முடியாதவாறு வரையறுப்பது தேவையாகிறது.
இதற்கு ASP.NET என்று இல்லாமல் இதர தொழில்நுட்பங்களிலும் பின்பற்றப்படும் ஒரு முறை, படிவத்தை (ஃபார்ம்) சப்மிட் செய்தவுடன் onsubmit ஈவெண்ட்டில் குறிப்பிட்ட டெக்ஸ்ட் ஏரியாவின் அளவைப் பரிசோதித்து, ஃபார்ம் சப்மிட் ஆவதைத் தடுப்பதுதான். இப்படி தடுத்தவுடன் பயனருக்கு ஒரு அலர்ட் பாக்ஸ் வழியாக தகவலின் அளவைக் குறைக்கச்சொல்லி அறிவிக்கலாம்.
ஆனால் நிறைய டெக்ஸ்ட் ஏரியா இருக்கும் ஒரு இணையப்படிவத்தில் இந்த வழி சற்று கடினமானது. இதற்கான தீர்வு, ஏஎஸ்பி.நெட்டில் உள்ள வேலிடேஷன் கண்ட்ரோலில்...