Posts

Showing posts from 2013

สูตรที่ใช้คิดการผ่อนรถต่อเดือน

วิธีการคิดมีสูตรดังนี้ครับ จำนวนเงินที่ต้องผ่อนต่อเดือน = ( จำนวนเงินกู้ + ( จำนวนเงินกู้ x อัตราดอกเบี้ย x จำนวนปีที่กู้ ) ) / จำนวนเดือนที่ต้องผ่อน ตัวอย่าง นาย ก. ต้องการซื้อรถราคา 1,200,000 บาท จ่ายเงินดาวน์ไป 25% คิดเป็น 300,000 บาท เงินที่ต้องกู้คิดเป็นเงิน 900,000 บาท โดยเสียอัตราดอกเบี้ย 2% ต่อปี และต้องการผ่อนเป็นเวลา 5 ปี ดังนั้น ( 900,000 + ( 900,000 x (2/100) x 5 ) ) / 60 จะได้ว่านาย ก. ต้องผ่อนเดือนละ 16,500 บาท *** เอาไว้คิดก่อนที่จะตัดสินใจซื้อรถได้ครับ ***

Crystal Report :: Insert Checkbox

วิธีการแสดงกล่องที่มีเครื่องหมายถูกด้วย ปัญหานี้ทางทีมงานผู้พัฒนาก็ไม่ได้ Control รองรับเอาไว้เสียด้วย ตอนนี้เรามีทางออกให้แล้ว ดังนี้ สร้าง Formular Fields ที่ชื่อว่า f_checkbox หรือชื่ออะไรก็ได้ขึ้นมา เขียนคำสั่ง Chr(254) ใน f_checkbox ทำการเปลี่ยน Font ที่ใช้แสดงผลให้เป็น Wingdings  เสร็จสิ้นกระบวนการ หมายเหตุ... Chr(254) ตัวนี้ภายในอาจจะเป็นอย่างอื่นได้อีกมากมาย อาทิเช่น Chr(168) จะได้ กล่องสี่เหลี่ยมไม่มีเครื่องหมายถูก Chr(251) จะได้ เครื่องหมายกากบาท Chr(252) จะได้ เครื่องหมายถูก Chr(253) จะได้ กล่องสี่เหลี่ยมที่มีเครื่องหมายกากบาท Chr(253) จะได้ กล่องสี่เหลี่ยมที่มีเครื่องหมายถูก เป็นต้น  เว็บอ้างอิง

Windows 8 and Map Network Drive

   ปัญหามันมีอยู่ว่าที่ทำงานมีระบบ Active Directory และมีการใช้คำสั่ง Map Network Drive ผ่าน Group Policy ทั้งๆที่ Windows XP, Windows 7 ก็สามารถเห็น Network Drive ได้ตามปกติ แต่พอมี Windows 8 เข้ามาใช้ดันไม่เห็น หลังจากค้นหาข้อมูลสักพักนึงก็พบว่า ต้องทำการแก้ไข Registry ที่เครื่อง Client ก่อนถึงจะสามารถมองเห็น Network Drive ได้ ดังนี้ ไปที่  HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System เพิ่มค่า DWORD (ถ้ามี 32-bit กับ 64-bit ให้เลือก 32-bit) ตั้งชื่อว่า " EnableLinkedConnections " กำหนดค่าเป็น  1 (Hex) เมื่อแก้ไข Registry เสร็จแล้วให้ Reboot เครื่อง ก็จะมองเห็น Network Drive ทันที

Startup Program on Windows Server 2012

open run command (Winkey+R)-> type shell:Startup This will open a window in the otherwise hidden AppData path for the Startmenu/Programs/Startup -> Add a shortcut to the executable for the program you want to start. This will of course only apply to the logon account that you're using at the time. For all users type shell:Common Startup

Mac and External Harddisk Problem...

ปัญหา :: ถ้าเราใช้ External Harddisk ไปใช้งานกับเครื่อง Mac แล้วพบว่าเจอปัญหาว่า สามารถอ่านข้อมูลได้ แต่ไม่สามารถเขียน หรือแก้ไขไฟล์ที่อยู่ที่ External Harddisk ได้ วิธีการแก้ไข ::  เครื่อง Mac สามารถอ่าน Format ของ Harddisk ได้ทั้งหมดแล้ว ณ ปัจจุบัน ไม่ว่าจะเป็น FAT, FAT32, NTFS แต่ปัญหามันอยู่ที่ว่า NTFS สามารถอ่านได้อย่างเดียวเท่านั้น ดังนั้นวิธีการแก้ไขปัญหาคือ ให้ทำการ Format External Harddisk ให้เป็น FAT32 ก็จะหมดปัญหาไปครับ

Command Config Network

Set to DHCP netsh int ip set address "Local Area Connection" dhcp netsh int ip set dns "Local Area Connection" dhcp Set to Manual IP netsh int ip set address "Local Area Connection" static 192.168.1.10 255.255.255.0 192.168.1.254 1 netsh int ip set dns "Local Area Connection" static 192.168.1.254 primary

Gridview Sorting by Programming

Protected Sub GridView1_Sorting(sender As Object, e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles GridView1.Sorting ds.Tables("dt").DefaultView.Sort = e.SortExpression '& " " & GetSortDirection(e.SortExpression) GridView1.DataSource = ds.Tables("dt") GridView1.DataBind() End Sub Private Function GetSortDirection(ByVal column As String) As String ' By default, set the sort direction to ascending. Dim sortDirection = "ASC" ' Retrieve the last column that was sorted. Dim sortExpression = TryCast(ViewState("SortExpression"), String) If sortExpression IsNot Nothing Then ' Check if the same column is being sorted. ' Otherwise, the default value can be returned. If sortExpression = column Then Dim lastDirection = TryCast(ViewState("SortDirection"), String) If lastDirection IsNot Nothing _ AndAlso lastDirection = "ASC" Then sortDirection

Close windows exclude popup message

Image
     เว็บโปรแกรมเมอร์ทุกท่านคงเคยเจอปัญหาว่าเขียนเว็บ หรือโปรแกรมแล้ว ต้องการปิดหน้าต่างนั้นส่วนใหญ่ก็จะใช้ window.close(); เป็นส่วนใหญ่ แต่หลังจากที่ใช้แล้วจะพบว่า มันขึ้นข้อความตามภาพด้านล่างนี้      แต่ตอนนี้มีทางแก้แล้ว โดยสามารถทำการเพิ่มคำสั่ง window.open('','_self','') เสียก่อนจะไม่ขึ้นข้อความตามภาพแล้ว ดังนั้นสามารถเขียนเป็นฟังก์ชั่นได้ดังนี้ <script language="JavaScript"> function closewindow() {    window.open('','_self','');    window.close();  } </script>  -- เพิ่มเติมส่วนใหญ่ฟังก์ชั่นด้านบนน่าจะถูกเรียกใช้งานบ่อยๆ ดังนั้นเราสามารถทำเป็น Class ได้ (asp.net) Imports Microsoft.VisualBasic Public Class Functions     Public Shared Sub SessionTimeout()         Dim scripts As String         scripts = "   < script language='JavaScript' > alert('Session Timeout. Please try login again.'); window.open('','_self',''); window.close(); < /

Send mail have text and image content.

   การเขียนโปรแกรมสามารถส่งเมลล์ที่เป็๋นข้อความได้ตามปกติอยู่แล้ว มีอยู่วันนึงต้องทำการส่งเมลล์โดยให้ทำการแนบไฟล์ที่เป็นรูปภาพเข้าไปด้วย แต่รูปนั้นต้องเป็นรูปที่แสดงอยู่ในลักษณะอยู่ในเนื้อข้อความเลย โดยที่ไม่ต้อง Double Click เพื่อดูรูปนั้นๆ    วันนี้จึงจะมาแชร์โปรแกรมให้ดูกันว่าเขียนยังไง โดยมีทั้งสองแบบเลย แบบที่1 คือรูปที่นำมาแสดงจากไฟล์ และแบบที่2 คือรูปที่นำมาแสดงจากฐานข้อมูล ดังนี้ 1. ทำการนำเข้า Library ที่ต้องการใช้งานก่อน Import System.net.mail 2. กำหนดตัวแปรที่จำเป็นต้องใช้ในการส่งเมลล์ Dim myMail As New MailMessage() Dim MailClient As New SmtpClient("smtp.company.com") Dim myBody As String = "" myMail.From = New MailAddress("prompratan@gmail.com", "Prompratan Nakajakawan") myMail.To.Add("prompratan@gmail.com") myMail.IsBodyHtml = True 3. กำหนด Subject ตามใจชอบ myMail.Subject = "This is e-mail advanced feature..." 4. กำหนด Body ตามใจชอบ แต่ถ้าต้องการให้ส่วนไหนเป็นรูปให้ใส่ดังนี้  <img sr

Search user for Account option is Password never expires.

Syntax : dsquery * domainroot -filter "(&(objectClass=user) (userAccountControl>=65536))" -attr sAMAccountName userPrincipalName userAccountControl -d Example : dsquery * domainroot -filter "(&(objectClass=user) (userAccountControl>=65536))" -attr sAMAccountName userPrincipalName userAccountControl -d mydom.local Reference   http://ckerekes.com/dsquery.shtml

Search users by group and save to file

dsquery group -name "Group Name" |DSGET group -members > C:\User.txt

Gridview : Export To Excel ฉบับสมบูรณ์ (แก้บัคภาษาไทยด้วย)

   การเขียนโปรแกรมโดยใช้งาน Control ที่ชื่อว่า Gridview เชื่อได้ว่าทุกคนคงต้องเจอว่า "อยากได้ข้อมูลตารางนี้เป็น Excel ทำไงดี ทำให้พี่หน่อย - -a" ดังนั้นจากประสบการณ์ที่ผ่านมาเจอปัญหาส่วนใหญ่กรณีที่ข้อมูลใน Gridview เป็นภาษาไทย พอทำการ Export จะเจอปัญหาว่า ภาษาไทยเพี้ยนบ้างไรบ้าง ขอสรุปแยกเป็น 2 วิธีการดังนี้ 1. กรณี Gridview ไม่มีการใช้งาน Template Field    1.1) นำ Code ด้านล่าง ไปใส่ที่ปุ่ม Export Excel ได้เลย โดยที่ตั้งชื่อ Gridview เป็น gv Response.ClearContent() Response.AddHeader("content-disposition", "attachment;filename=file.xls") Response.ContentEncoding = System.Text.Encoding.UTF8 Response.Charset = "" Response.Cache.SetCacheability(HttpCacheability.NoCache) Response.ContentType = "application/vnd.xls" Dim tw As New System.IO.StringWriter() Dim hw As New System.Web.UI.HtmlTextWriter(tw) Dim frm As New HtmlForm() frm.Attributes("runat") = "server" frm.Controls.Add(gv) gv_Series.RenderControl(

Using Dynamic Memory in Hyper-V on Windows Server 2008 R2 SP1

Image
การใช้งาน Dynamic Memory ในระบบ Hyper-V บน Windows Server 2008 R2 SP1 Dynamic Memory  เป็นคุณสมบัติใหม่ใน Service Pack 1 (SP1) สำหรับ Windows Server 2008 R2 และ Hyper-V Server 2008 R2 ที่ช่วยให้สามารถใช้งานหน่วยความจำทางกายภาพ (Physical Memory) ในระบบ Hyper-V ได้อย่างมีประสิทธิภาพยิ่งขึ้น มีความเป็นไดนามิกมากขึ้น สามารถรองรับการขยายระบบได้มากขึ้นและง่ายขึ้น โดยก่อนหน้าที่จะมี SP1 นั้น การกำหนดหน่วยความจำให้กับเวอร์ชวลแมชชีน (Virtual machine) ในระบบ Hyper-V จะเป็นแบบคงที่ (Static Memory) หมายความว่าเวอร์ชวลแมชชีนแต่ละตัวจะครอบครองหน่วยความจำที่กำหนดให้ตลอดเวลาที่เปิดเครื่องไม่ว่าเวอร์ชวลแมชชีนจะอยู่ในสถานะทำงานหรือหยุดทำงานชั่วคราวก็ตาม โดยเวอร์ชวลแมชชีนจะคืนหน่วยความจำให้ระบบก็ต่อเมื่ออยู่ในสถานะบันทึกหรือปิดเครื่องเท่านั้น สำหรับเอนทรี่นี้จะสาธิตวิธีการใช้งานคุณสมบัติ Dynamic Memory ในระบบ Hyper-V บน Windows Server 2008 R2 SP1 โดยก่อนอื่นขอแนะนำพารามิเตอร์ต่างๆ ที่เพิ่มขึ้นหลังจากทำการติดตั้ง SP1 ดังนี้ Dynamic Memory: เป็นโหมดใหม่ที่เพิ่มขึ้นมาในหัวข้อ Memory management ในระบ

SQL Query Call Web Application

การเขียน SQL Query แบบที่ต้องการรันโปรแกรมที่อยู่บนเว็บ DECLARE @sUrl, @obj int, @response varchar(800) SET @sUrl = "http://server/myapp.aspx" exec sp_OACreate 'WinHttp.WinHttpRequest.5.1', @obj OUT exec sp_OAMethod @obj,'Open',NULL,'GET', @sUrl, false exec sp_OAMethod @obj,'send' exec sp_OAGetProperty @obj,'responseText', @response OUT exec sp_OADestroy @obj

Tip!!! การเขียนโปรแกรมอ้างอิงกรณี Gridview ซ้อน Gridview

   เมื่อทำการเขียนโปรแกรมแล้วเราจะพบปัญหาว่าการเขียนโดยใช้ Gridview1 มี Template Field ที่มี Gridview2 อยู่ในนั้น และใน Gridview2 ก็จะมี Button อยู่ในนั้นด้วย ปัญหาที่เกิดขึ้นจะเจอว่า ถ้าต้องการกดปุ่มดังกล่าวใน Gridview2 แล้วจะอ้างอิงมายัง Gridview1 จะทำอย่างไรดี Protected Sub btn_Button1_Click(sender As Object, e As System.EventArgs)   '-- สร้างปุ่มขึ้นมาเพื่อทำการรองรับปุ่มที่ถูกกดมาจริง   Dim btn_Button1 As Button = CType(sender, Button)    '-- สร้างตัวแปร Gridview1_Row เพื่อดูว่าปุ่ม Button1 นั้นอยู่ใน Row ไหน   Dim GridView1_Row As GridViewRow = CType(btn_Button1.NamingContainer, GridViewRow)   '-- สร้างตัวแปร Gridview1 เพื่อรับ Gridview ใน Gridview1_Row นี้   Dim Gridview1 As GridView = CType(GridView1_Row.NamingContainer, GridView)   '-- สร้างตัวแปร lbl รับ Label Object ใน Gridview1_Row   Dim lbl As Label = CType(GridView1_Row.FindControl("lbl"), Label) End Sub   ในปัญหาเดียวกัน ถ้ามีการซ้อนกันของ Gridview มากกว่า 1 ชั้นก็สามารถอ้างอิงกลับ

Automatic Logon

กดปุ่ม WINDOWS + R [ปุ่ม Windows คือปุ่มระหว่าง CTRL และ ALT] ให้พิมพ์ว่า “ netplwiz ” และกด Enter หรือกดปุ่ม OK หลังจากนั้นหน้าต่าง User Accounts จะขึ้นมา ให้เรากดเอาเครืองหมายถูกออกจาก “Users Must enter a user name and password to use this computer” จาก ID ที่เราไม่ต้องการให้มันถามทุกๆครั้งที่ restart. มันจะถามให้ใส่ User และ Password เพื่อยืนยันการเปลี่ยนแปลง เท่านี่ก็เป็นอันเสร็จสิ้น.

File Server :: Transfer to new server with permission

Use robocopy.exe (if less than windows7 then copy robocopy.exe to c:\windows\system32) # Folder and Structure robocopy "\\server\path" "d:\path" /E /lev:2 /E /SEC /XF * # Copy all data in folder robocopy "\\server\path" "d:\path" /E /COPYALL /SEC /PURGE

Client ID & Server ID

Hide TR Tag aspx <table style="width:100%;">    <tr runat="server" id="td1">       <td>1</td>       <td>1</td>       <td>1</td>    </tr>    <tr>       <td>2</td>       <td>2</td>       <td>2</td>    </tr> </table> aspx.vb Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load     td1 .Visible = False End Sub

Conditional if NULL with records from database and GridView

Text='<%# IIF(Eval("field1").Equals(DBNull.value),"No Answer",Eval("field1"))%>'

iframe delay load !!!

ปัญหา เกิดจากกรณีที่ทำการเขียนเว็บ แล้วจำเป็นต้องการใช้ iframe ในการแสดงผล แต่ปัญหาที่พบคือ โปรแกรมที่ iframe ทำการเรียกใช้งานนั้นไม่สามารถแสดงผลออกมาได้พร้อมกับไฟล์หลัก ดังนั้นบางครั้งจึงแสดงหน้าขาวๆขึ้นมาบนหน้าเว็บแทน วิธีแก้ไข อาจมีได้หลายวิธี แต่วิธีที่เห็นว่าทำได้ง่าย และได้ผลคือใช้ jquery ในการควบคุมการแสดงผล ดังนี้ 1. เพิ่มที่ด้านบนของหน้าเว็บ <script src="jquery.js" type="text/javascript"></script> 2. เพิ่ม Tag DIV เอาในจุดที่เราต้องการให้ iframe แสดงผล <div id="div01"></div> 3. เพิ่ม JavaScript เอาไว้หลัง div01 ดังนี้ <script> //doesn't block the load event function createIframe(){ var i = document.createElement("iframe"); i.src = "program.aspx"; i.scrolling = "auto"; i.frameborder = "0"; i.width = "450px"; i.height = "450px"; document.getElementById("div01").appendChild(i); }; // Check for browser supp

Auto Shutdown or Restart Computer Script.

Script - Restart Computer Open Notepad Type shutdown /r /f Click File > Save As  Choose Save as type is All Files (*.*) Type File name is restart.bat Script - Shutdown Computer Open Notepad Type shutdown /s /t 00 Click File > Save As  Choose Save as type is All Files (*.*) Type File name is shutdown.bat Instruction Open Notepad Type [Scripts] Click File > Save As  Choose Save as type is All Files (*.*) Type File name is shutdown.bat Schedule (Windows 7) Go to Start Menu is Start > All Program > Accessories > System Tools > Task Schedule Right-Click on Task Scheduler Library > Create Basic Task Type Name ... Choose Trigger is Daily Choose Time for Execute script Choose Action to Start a program. Browse file .bat (Your script) Finish

Anti-Virus for Windows Server 2012

- ClamWin Free Anti-Virus เป็นโปรแกรมป้องกันไวรัสที่ฟรี อยู่ในรูปแบบของ Open Source แต่ข้อเสียของโปรแกรมตัวนี้ คือไม่มีระบบ Real-Time Scan แต่ตอนนี้มีโปรแกรมเสริมเข้ามาทำให้สามารถใช้ Real-Time Scan ได้แล้วโดยใช้โปรแกรมที่ชื่อว่า  Clam Sentinel     Virus Database Updates ให้ทำการใช้ Download Site ที่ใกล้ประเทศของเรา ถ้าเป็นของเมืองไทยใช้เป็น clamav.sran.net โดยเข้าไปทำการแก้ไขที่หน้า Configure ClamWin > Internet Updates > Download Site = clamav.sran.net

Set Session Timeout

session_start(); // set timeout period in seconds $inactive = 600; // check to see if $_SESSION['timeout'] is set if(isset($_SESSION['timeout']) ) {         $session_life = time() - $_SESSION[' timeout '];         if($session_life > $inactive)         { session_destroy(); header("Location: logout.php"); } } $_SESSION['timeout'] = time();

asp:Menu ไม่สามารถใช้งานได้ในบาง Browser

     การเขียนโปรแกรมโดยใช้งาน asp.net โดยที่ใช้ Control ที่ชื่อว่า Menu โดยการแสดงผลบน IE ก็สามารถใช้งานได้ตามปกติ แต่ปัจจุบันมีการใช้งาน Smart Mobile ผ่าน Internet กันมากขึ้น ดังนั้น Browser ค่ายดังๆก็สามารถเรียกเว็บที่เป็น asp.net ได้เช่นกัน เท่าที่ทดสอบพบว่า Browser บางตัวไม่สามารถแสดงผล Control Menu ได้อย่างถูกต้อง ดังนั้นจึงต้องเขียนโปรแกรมแก้ไขกันดังนี้ If (Request.UserAgent.IndexOf("AppleWebKit") > 0) OrElse (Request.UserAgent.IndexOf("Safari") > 0) OrElse (Request.UserAgent.IndexOf("Chrome") > 0) Then      Request.Browser.Adapters.Clear() End If โดยสามารถนำไปใส่ที่ Page_Load ได้เลยจะแสดงปัญหาแสดงผล หรือการทำงานที่ไม่ถูกต้องได้ครับ