สมัครสมาชิก

แสดงกระทู้

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - ปิ่นณรงค์

หน้า: [1] 2
1
จากการทดลองเฉพาะกับ Textbox  ได้ข้อมูลเพิ่มเติมว่าสามารถใช้ OnPaint event เพื่อกำหนดค่า Property เหล่านี้ให้แตกต่างกันในแต่ละบรรทัดใน Continuous Form ได้นะครับ แต่ก็มีบางอันที่คุณสมบัติอาจเปลี่ยนไปจากที่กำหนดเมื่อเราคลิกไปที่ Textbox นั้นๆ แต่ถ้าไม่คลิกก็จะไม่มีปัญหาครับ อีกอย่างคือผมไม่ได้เช็คทุก Property นะครับ เช็คเฉพาะ Property ส่วนใหญ่ที่อยู่ในหมวด Format ใน Property Sheet เท่านั้น

Format
DecimalPlace
BackStyle
BackColor
BorderStyle
BorderWidth
BorderColor
SpecialEffect
ScrollBars
FontName
FontSize
TextAlign
FontWeight
FontUnderline
FontItalic
ForeColor
LineSpacing
TopMargin
BottomMargin
LeftMargin
RightMargin
โพสต์นี้ได้รับคำขอบคุณจาก: ปิ่นณรงค์

2
ไม่เคยรู้มาก่อนว่า OnPaint event สามารถควบคุมให้ Unbound Control ในแต่ละบรรทัดของ Continuous Form มีสีที่แตกต่างกันได้ .. ความรู้ใหม่ ขอบคุณครับ
โพสต์นี้ได้รับคำขอบคุณจาก: ปิ่นณรงค์

3
ลองเล่นๆ การส่ง line notify ส่งข้อความ รูปภาพด้วย VBA ไปเจอบทความดีดี ที่นี่เลยเอามาลองเล่นครับ

ขอขอบคุณแหล่งที่มา :
http://white5168.blogspot.com/2017/01/line-notify-6-line-notify.html#.XHvsT4gzbIV link
โพสต์นี้ได้รับคำขอบคุณจาก: ปิ่นณรงค์

4
ไฟล์ที่คุณส่งมา ผมเปิดแล้วติด Error ตั้งแต่ตอนเปิดฟอร์ม SFPOPL เลยครับ

ผมไม่อยากไล่ Code นะครับ ก็เลยใช้การวิเคราะห์เอาจากรูปที่คุณแจ้งไว้ในตอนแรก แล้วดูเฉพาะ Code ส่วนที่เกี่ยวข้อง
1. จาก Error แจ้งว่าต้องป้อนข้อมูลเข้าไปในฟิลด์ IdPL ของตาราง TbPL แสดงว่าไม่มีการป้อนข้อมูลเข้าฟิลด์นี้ ถึงได้เกิดปัญหา

2. พอไปเช็คใน Form_Load ของฟอร์มนี้ ก็สะดุดที่
  Me.txtIdPL = strThmbFind + "0"

3. ปัญหาคือ ผมหา  strThmbFind ไม่เจอว่าอยู่ที่ไหน เห็นแต่กำหนดเป็น Public ไว้ที่ Module1

ปัญหาน่าจะมาจากตรงนี้นะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: ปิ่นณรงค์

5
ขอร่วมตอบครับอ.อ.ปิ่นณรงค์ 
โค๊ด: [Select]
Public Function MakeTableWithConvertToRow2(ByVal sMainTable As String, ByVal sTempTable As String)
'On Error Resume Next
    Dim RS_IN As DAO.Recordset
    Dim RS_OUT As DAO.Recordset
    Dim ColName As Integer
    Set RS_IN = CurrentDb.OpenRecordset("Select" & "* from " & sMainTable & "")
    'Set RS_OUT = CurrentDb.OpenRecordset("Select" & "* from " & sTempTable & "")
    Set RS_OUT = CurrentDb.OpenRecordset(sTempTable, dbOpenTable)
    Do While Not RS_IN.EOF
        RS_OUT.Index = "PrimaryKey"
        RS_OUT.Seek "=", RS_IN(0).Value
             For ColName = 0 To RS_OUT.Fields.Count - 1
             If RS_OUT.NoMatch Then
                    RS_OUT.AddNew
            Else
                    RS_OUT.Edit
            End If
                    If RS_IN(1).Value = RS_OUT(ColName).Name Then
                            RS_OUT(0).Value = RS_IN(0).Value
                            RS_OUT(RS_OUT(ColName).Name).Value = RS_IN(2).Value
                            RS_OUT.Update
                    End If
                 Next
                RS_IN.MoveNext
    Loop
    RS_IN.Close
    RS_OUT.Close
    Set RS_IN = Nothing
    Set RS_OUT = Nothing
End Function

โพสต์นี้ได้รับคำขอบคุณจาก: ปิ่นณรงค์

6
แก้ Bug นิดนึงครับ
โพสต์นี้ได้รับคำขอบคุณจาก: ปิ่นณรงค์

7
วิเคราะห์เหตุการณ์โจรไซเบอร์ปล้นเงิน 10 ล้านบาทด้วยมัลแวร์

https://www.catcyfence.com/it-security/article/analysis-of-cyber-crooks-use-malware-robbing-10-mb/?fbclid=IwAR3ykbcbvMGVDz73pVAARPoOdvGwO5X7yzAFEBN_EzrR8bZm6HE6tXvyNEI link
โพสต์นี้ได้รับคำขอบคุณจาก: ปิ่นณรงค์

9
อ้างถึง
ไม่ให้ช่องภูมิภาคเป็นช่องหลัก , เลือกจังหวัดเสร็จ > ช่องภูมิภาคขึ้นมาให้เลย
ผมขออนุญาตนำไฟล์ของ อ.ปิ่นณรงค์ ไปแก้นะครับ โดย
• เปลี่ยนช่องเลือกภาค(Cb_geography) เป็น TextBox
• จังหวัด
  - column count = 3 , column widths = 0cm;2cm;0cm
  - Data > Row Source =
โค๊ด: [Select]
SELECT tb_province.province_id, tb_province.Province_th, tb_geography.GEO_NAME FROM tb_province INNER JOIN tb_geography ON tb_province.geo_id = tb_geography.GEO_ID;
  - VB ในส่วนของ cb_province_AfterUpdate เพิ่ม     
โค๊ด: [Select]
Me.Cb_geography = cb_province.Column(2)
ปล.ผมก็...เอาอ่านะลองดูจากไฟล์เลยครับ :prettiness:
โพสต์นี้ได้รับคำขอบคุณจาก: ปิ่นณรงค์

10
ห้อง MS Access / : อยากทำ progress meter
« เมื่อ: 10 ธ.ค. 61 , 17:14:08 »
ลองดูคลิปนี้นะครับ แต่การแสดง meter มันทำให้เครื่องต้องเสียเวลาแสดงส่วนนี้เพิ่มด้วยทำให้การทำงานช้าลงอีกนะครับ



ปล. มันจะมีอีกอย่างคือ progress meter ที่ Status bar ไม่แน่ใจว่าตั้งแต่ MS Access เวอร์ชั่น 2007 หรือ 2010 ขึ้นไป ก็สามารถเขียนคำสั่งให้มันแสดงความก้าวหน้าได้ ตัวอย่าง

1. สร้างตัวแปร
Dim ReturnValue As Variant
 
2. กำหนด สเกล ให้ เท่ากับ 100
ReturnValue = SysCmd(acSysCmdInitMeter, "Processing ", 100)
 
3. สมมุติเป็นการนับเรคคอร์ดทั้ง ก็ทำให้ เป็น เปอร์เซนต์
For StartLoop = 0 To (TotalRecord - 1)
      ReturnValue = SysCmd(acSysCmdUpdateMeter, ((StartLoop) / TotalRecord) * 100)
Next StartLoop
 
4. เคลียร์
ReturnValue = SysCmd(acSysCmdRemoveMeter)

อะไรประมาณนี้ครับ ปรับใช้ดู

โพสต์นี้ได้รับคำขอบคุณจาก: ปิ่นณรงค์

11
ห้อง MS Access / : การใช้คำสั่ง iifซ้อน iif
« เมื่อ: 10 ธ.ค. 61 , 17:06:21 »
ใช้ MS Access เวอร์ชั่นอะไรอะครับ ทำไมเหมือนใส่ได้น้อยจัง เหมือนกับมันใส่อักษรเกินที่ Textbox มันรับได้ป่าวครับ ถ้าใช่ให้แก้โดยแบ่งครึ่งเงื่อนไขครับ เช่น
a: IIf(Not IsNull([Eff20]),[Eff20],IIf(Not IsNull([Eff19]),[Eff19],Null)) ไปเรื่อยๆ จนสุดที่ใช้ได้
สร้างอีกฟิลด์
b: IIf(IsNull([a]),IIf(Not IsNull([Eff18]),[Eff18],Null),[a]) ไปเรื่อยๆ อีก ถ้ายังไม่หมดก็ต่ออีกฟิลด์ แล้วเราก็เอาฟิลด์สุดท้ายไปใช้งานครับ พอนึกภาพออกไม๊ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: ปิ่นณรงค์

12
อ.ปิ่นณรงค์ไม่ต้องทำแล้วก็ได้ครับ ผมแก้ไขตัวโปรแกรมเรียบร้อยแล้วครับ เปลี่ยนจากคำสั่งVBเป็นมาโครทั้งหมดเลยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: ปิ่นณรงค์

13
ห้อง MS Access / : รวมตาราง
« เมื่อ: 31 ส.ค. 61 , 16:27:02 »
ไม่เคยทำระบบที่ต้องสร้างข้อมูลซ้ำกันแบบนี้ ดีที่สุดคือไม่สร้างซ้ำ แต่ถ้าจำเป็นต้องสร้างซ้ำแล้ว โดยหลักการของ DBMS แล้ว น่าจะเป็นเรื่องของ Trigger http://www.mysqltutorial.org/mysql-triggers.aspx link ที่จะทำงานเมื่อเกิดการเปลี่ยนแปลงข้อมูลในเทเบิล ก็ต้องเขียนโค้ดใน Trigger ใน MySQL สำหรับทุกเทเบิล ให้ไปปรับปรุงข้อมูลในเทเบิลที่เกี่ยวข้องให้ถูกต้องตรงกัน

อีกอย่างที่ต้องคำนึงถึงคือเรื่องของ Transaction Control คือ DBMS จะปรับปรุงข้อมูลทั้งเทเบิลตัวเองและที่เกี่ยวข้องได้สำเร็จ ก็ต้องทำได้สำเร็จทั้งคู่ (Commit Transaction) ถ้าเทเบิลใดเทเบิลหนึ่งปรับปรุงไม่สำเร็จ ก็ต้องยกเลิกได้ทั้งคู่โดยอัตโนมัติ  (Rollback Transaction)  ไม่งั้นข้อมูลก็จะไม่เหมือนกัน ตรงนี้ผมไม่รู้ว่า MySQL สนับสนุนให้ทำได้พร้อม Trigger ด้วยหรือไม่ และถ้าทำได้ ถ้าเกิดกรณี Rollback Transaction แล้ว  จะมี runtime error อะไรส่งกลับมาบอก Access ด้วยหรือไม่ ตรงนี้ก็ต้องทดลองด้วยนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: ปิ่นณรงค์

14
Forms("ชื่อฟอร์ม").SetFocus
Docmd.RunCommand acCmdDocMinimize ' สำหรับหดฟอร์ม หรือใช้ acCmdDocMaximize สำหรับขยายเต็มวินโดว์ของ Access หรือใช้ acCmdDocRestore สำหรับกลับคืนขนาดก่อนการหดหรือขยายฟอร์ม
โพสต์นี้ได้รับคำขอบคุณจาก: ปิ่นณรงค์

15
หากคำสั่งอยู่ที่ฟอร์มหลัก ต้องโฟกัสที่ซับฟอร์มก่อนแล้วค่อยโฟกัสที่คอนโทรลซับฟอร์มอีกครั้ง

Forms![เมนฟอร์ม]![ซับฟอร์ม].SetFocus
Forms![เมนฟอร์ม]![ซับฟอร์ม].Form.[คอนโทรล].SetFocus

เป็น
Forms![Frm_Main]![Frm_Sub].SetFocus
Forms![Frm_Main]![Frm_Sub].Form.[Text1].SetFocus
หรือแบบนี้ก็ได้
Me("Frm_Sub").SetFocus
Me("Frm_Sub").Form.Text1.SetFocus

ปรับใช้ดูครับ
โพสต์นี้ได้รับคำขอบคุณจาก: ปิ่นณรงค์

16
<?xml version="1.0" encoding="utf-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui link">
<ribbon startFromScratch="false">
    <tabs>
<!-- ซ่อนแท็บ CREATE ->
      <tab idMso="TabCreate" visible="false" />
<!-- เพิ่ม TAB A Custom Tab ->
      <tab id="dbCustomTab" label="A Custom Tab" visible="true">
        <group id="dbCustomGroup" label="A Custom Group">
          <control idMso="Paste" label="Built-in Paste" enabled="true"/>
        </group>
        <group id="dbCustomGroup2" label="Another Custom Group">
          <control idMso="ImportExcel" label="Import from Excel" enabled="true"/>
          <control idMso="ExportExcel" label="Export to Excel" enabled="true"/>
          <control idMso="FontColorPicker" label="FontColorPicker" enabled="true"/>
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

ผมก็ไม่ได้เก่ง XML นะครับ ถ้ามีพื้นฐาน HTML จะเข้าใจ Code XML ได้ไม่ยาก

ข้างบนนี่คือตัวอย่าง Code ง่ายๆ ที่คุณน่าจะเอาไปต่อยอดเองได้

โดยผมได้แนบไว้ไฟล์เอาไปทดลองมาให้ด้วย

วิธีการเอา Code เกี่ยวกับ Ribbon แบบง่ายๆ คือ ให้สร้าง Custom Menu แล้ว Export จากนั้นเปิดอ่านด้วย Notepad เอาครับ

Code ไม่ยากจริงๆ

โพสต์นี้ได้รับคำขอบคุณจาก: ปิ่นณรงค์

หน้า: [1] 2