3/27/2012

Axapta : Error wrong argument types in variable assignment.

Error executing code: Wrong argument types in variable assignment.

เมื่อเรียกใช้ Class แล้วมี Error ดังรูป

เกิดจากมีการทำงานที่ผิดพลาด เวลาเขียนโปรแกรม แล้วมีการใช้งานทำให้มีงานค้างที่ Server

แก้ปัญหาโดย เข้าไปที่ เมนูของโปรแกรม Axapta
เลือก Tools ---> Options ---> Click button Usage data

และดูที่ Tap ต่าง ๆ ที่มีงานที่เราเรียกใช้ แล้ว Error เช่น จะมีชื่อคล้าย ๆ กับ Class หรือ Report ที่เราเรียกใช้
ส่วนมากจะอยู่ที่ Tab Job แล้วเลือกชื่อ Class ที่ Error แล้วกด Delete เมนูด้านบน  ลองเข้าที่ Class หรือ Report นั้นอีกที
ถ้าไม่ได้ ก็หาใน Tab อื่น ๆ อีก


3/26/2012

PHP : ตรวจสอบ email ว่ากรอกอีเมลล์ถูกรูปแบบหรือไม่

รูปแบบคือ
- ขึ้นต้นตัวแรกด้วย > a-z หรือ A-Z
- ตัวต่อมาจะเป็น > a-z หรือ A-Z หรือ 0-9 หรือ _ หรือ - หรือ . อย่างน้อย 1 ตัว
- ตามด้วย > @ 1ตัว
- ตามด้วย > a-z หรือ A-Z หรือ 0-9 หรือ _ หรือ - อย่างน้อย 1 ตัว
- ตามด้วย > . 1 จุด
- ต่อมาตาม > a-z หรือ A-Z หรือ 0-9 หรือ _ หรือ - หรือ . อย่างน้อย 1 ตัว

เป็น javascript นะ


<script>
function check_form(name_form){
    var format_mail=/^([a-zA-Z]{1,})+([a-zA-Z0-9\_\-\.]{1,})+@([a-zA-Z0-9\-\_]{1,})+([.]{1,1})+([a-zA-Z0-9\-\_\.]{1,})$/;   
    if(!(format_mail.test(document.forms["register"].user_email.value)))
    {
        alert("รูปแบบอีเมล์ไม่ถูกต้อง");
        document.forms["register"].user_email.focus();
        return false;
    }
}
</script>
<form method="post"  name="register" onSubmit="return check_form(this)" autocomplete="off"> 
<input  name="user_email">
<input type="submit"  value="ตกลง" >

3/16/2012

PHP - ฟังชั่นเกี่ยวกับ date เปลี่ยนวันที่ ค.ศ. เป็น พ.ศ. โดยดึงวันที่มาจาก database

ฟังชั่นนี้เอาไปปรับเปลี่ยนได้ตามการใช้งานนะครับ ซึ่งที่จำเป็นต้องใช้ฟังก์ชั่นนีเพราะ SQL โดยมาตรฐานแล้วจะเก็บวันเวลา เป็น ค.ศ. ซึ่งโดยปกติแล้ว การเก็บเวลาโดยใช้รูปแบบ DATE(), NOW(), TIME() จำพวกนี้ ซึ่งง่ายต่อการจัดเก็บ แต่ข้อมูลที่เก็บไว้มันแสดงออกมา ไม่สวย ออกมาแบบข้อมูลดิบๆ ที่เราไม่ได้ปรับแต่งมัน ทีนี้จะมาดูฟังชั่น ที่แปลงวันที่ และเวลา ให้ออกมาตามรูปแบบที่เราต้องการ

function thaiDate($datetime) {
list($date,$time) = split(' ',$datetime); // แยกวันที่ กับ เวลาออกจากกัน
list($H,$i,$s) = split(':',$time); // แยกเวลา ออกเป็น ชั่วโมง นาที วินาที
list(
$Y,$m,$d) = split('-',$date); // แยกวันเป็น ปี เดือน วัน
$Y $Y+543// เปลี่ยน ค.ศ. เป็น พ.ศ.
switch(
$m
{
case 
"01":
$m "ม.ค."; break;
case 
"02":
$m "ก.พ."; break;
case 
"03":
$m "มี.ค."; break;
case 
"04":
$m "เม.ย."; break;
case 
"05":
$m "พ.ค."; break;
case 
"06":
$m "มิ.ย."; break;
case 
"07":
$m "ก.ค."; break;
case 
"08":
$m "ส.ค."; break;
case 
"09":
$m "ก.ย."; break;
case 
"10":
$m "ต.ค."; break;
case 
"11":
$m "พ.ย."; break;
case 
"12":
$m "ธ.ค."; break;
}
return 
$d." ".$m." ".$Y;
}
// รูปแบบวันที่ ที่เราเก็บจะเ็ป็นแบบนี้ ซึ่งได้มาจาก การ INSERT NOW() เข้าไปใน database
// yyyy-mm-dd hh-ii-ss
// 2010-02-25 08:10:35
$date '2010-02-25 08:10:35';

print 
thaiDate($date);
// ผลที่ได้คือ
// 25 ก.พ. 2553


หากต้องการแก้เป็น ชื่อเืดือนเต็มๆ ก็แก้ใน case ได้เลยครับ และหาต้องการให้แสดงเวลาด้วย ให้เพิ่ม ตรง return เป็นแบบนี้ครับ


return $d.' '.$m.' '.$Y.' เวลา '.$H.' '.$.' '.$s; 

3/13/2012

ThunderBird Error "The folder inbox is full"


****ก่อนการกระทำใด ๆ ควร Back Up Mail และไฟล์ทุกอย่างไว้ก่อนเสมอ
แก้ได้ 3 วิธี ดังนี้

1. แก้เบื้องต้นด้วยการ Compact ถ้า ข้อมูลเมล์มีมากเกินไป คือขนาดของ Inbox ที่ส่วนมากอยู่ใน C:\Documents and Settings\(USER)\Application Data\Thunderbird\Profiles\prcvlhmv.default\Mail\mail.scivalve.com เป็นต้นหรือที่อื่นตามที่ User ตั้งค่าไว้ หาก inbox มีขนาดมากกว่า 4 Gb การ Compact จะช่วยลดพีื้นที่ลงเล็กน้อย เท่านั้น จำเป็นต้องลบ เมล์เก่า ๆ ออกที่มีขนาดพื้นที่ใหญ่ แล้ว Compact ใหม่ สักพักก็จะเป็นอีกเมื่อมีเมล์เข้าเยอะ ๆ

2. สร้าง Folder ใหม่แล้วลากเมล์เก่า ๆ หรือทำไว้แต่ล่ะปีก็ได้แล้วลากจาก Inbox ไปเก็บไว้ใน Folder นั้น แล้วทำการ Compact ใหม่ วิธีนี้จะดีที่สุด แต่จะแยกเมล์ไว้ Folder ใคร Folder มัน

3. แก้โดยย้ายเมล์ออกและ นำเข้าไปใหม่วิธีนี้ลดขนาดพื้นที่ได้เยอะ แต่อย่างไรเมล์เก่า ๆ ก็ควรลบทิ้ง น่ะครับไม่งั่นก็คงเกินความจุ 4 Gb แล้วจะมี Error เหมือนเดิม วิธีนี้พื้นที่ inbox ลดลงประมาณ 800 - 900 mb
วิธีแก้แบบที่ 2
Mozilla ThunderBird Error "The folder inbox is full"
The whole error message is: "The folder inbox is full, and can't hold any more messages. To make room for more messages, delete any old or unwanted mail and compact the folder".

Follow this steps :
1 - Create a folder called TEMP (can be any name)
2 - Move all messages from Inbox to TEMP
3 - Exit Thunderbird
4 - Go to the LOCAL DIRECTORY folder and erase the 2 files : INBOX and INBOX.MSF
5 - Open thunderbird again
6 - Move ALL MESSAGES from TEMP to Inbox
7 - Erase TEMP folder
8 - DONE

ที่มา
http://www.ajaykumarsingh.com/mozilla-thunderbird/the-folder-inbox-is-full-and-cant-hold-any-more-messages.html
http://otaitek.blogspot.com/2010/05/mozilla-thunderbird-error-folder-inbox.html

ฟังก์ชั่นตรวจสอบเงื่อนไขแบบ Switch

ฟังก์ชัน switch จะทำการตรวจสอบตัวแปรว่ามีค่าเท่ากับ case ใด ถ้าตรงกับ case ใดก็จะทำงาน
ตามประโยคคำสั่งของ case นั้น การเปรียบเทียบของฟังก์ชัน switch ไม่สามารถเปรียบเทียบค่ามากกว่า น้อยกว่า
เหมือนฟังก์ชัน if ได้ และที่สำคัญตัวแปรที่นำมาใช้กับฟังก์ชัน switch จะต้องเป็นข้อมูลชนิดเลขจำนวนเต็ม
หรือตัวอักษรเท่านั้น ดังนั้น a1, a2 และ a3 อาจจะเป็นค่าคงที่ ตัวอักษร หรือตัวแปรก็ได้ โดยทั่วไปฟังก์ชัน
switch นิยมใช้ในการตรวจสอบเงื่อนไข จำนวนหลาย ๆ เงื่อนไขเพราะถ้าใช้ฟังก์ชัน if จะทำให้เกิดความยุ่งยากได้

รูปแบบ switch(ตัวแปร)
{
case a1;
ประโยคคำสั่ง 1;
break;
case a2;
ประโยคคำสั่ง 2;
break;
case a3;
ประโยคคำสั่ง 3;
break;
default;
ประโยคคำสั่ง ;
}