สมัครสมาชิก

แสดงกระทู้

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 - UnKnown

หน้า: [1] 2 3 4 ... 6
1
โดยทั่วไป Ms Access จะใช้โค้ดสีที่ต่างจากพวก > Hex / RGB / MS Access Color Values link
แต่สามารถกำหนดใช้เป็น RGB ได้เช่น Me.TextBox.BackColor = RGB(255, 255, 255) เป็นต้น

ดังนั้นการที่จะนำโค้ดสีที่เป็น Hex มาใช้ได้ก็ต้องแปลงให้กลายไปเป็น RGB ก่อนด้วย Module ตัวอย่างของท่านปิ่นณรงค์
หรือ > https://stackoverflow.com/questions/40588470/setting-access-colour-codes-in-vba/50523021#50523021 link
โค๊ด: [Select]
Public Function Color_Hex_To_Long(strColor As String) As Long
    Dim iRed As Integer
    Dim iGreen As Integer
    Dim iBlue As Integer

    strColor = Replace(strColor, "#", "")
    strColor = Right("000000" & strColor, 6)
    iBlue = Val("&H" & Mid(strColor, 1, 2))
    iGreen = Val("&H" & Mid(strColor, 3, 2))
    iRed = Val("&H" & Mid(strColor, 5, 2))

    Color_Hex_To_Long = RGB(iRed, iGreen, iBlue)
End Function

หรือ > https://stackoverflow.com/questions/51292169/how-to-set-background-of-a-form-to-a-hexidecimal-color-in-ms-access-vba link
ซึ่งวิธีนี้สามารถแปลงออกมาได้เลยไม่ต้องใช้โมดูล ผมจึงขอนำไฟล์ตัวอย่างของท่านปิ่นณรงค์มาทดสอบได้ผลตามไฟล์ตัวอย่างครับ
โค๊ด: [Select]
Me.Detail.BackColor = RGB("&H" & Left$(s, 2), _
                          "&H" & Mid$(s, 3, 2), _
                          "&H" & Right$(s, 2))
โค๊ด: [Select]
Me.Detail.BackColor = "&H" & Right$(s, 2) & Mid$(s, 3, 2) & Left$(s, 2)

2
สวัสดีครับ
เริ่มแรกในรูปแบบผมมองออกไปเป็นแนวการเหมือนทำแบบฟอร์มกรอกที่อยู่แล้วใส่รหัสไปรษณีย์ให้อัติโนมัติ ซึ่งก็จะมีการทำเทเบิ้ลเพื่อแยกแต่ล่ะส่วน(tb_geography,tb_province,tb_amphur,tb_district)ใว้ก่อน
ดังนั้นการที่จะมีชั้นลึกเข้าไปอย่างไม่จำกัดคงจะเป็นไปไม่ได้ ยกเว้นว่าจะออกแบบให้มีเทเบิ้ลเปล่ารอใว้ก่อนตามจำนวนที่คิดว่าจะลึกเข้าไปไม่เกินนี้(และโปรแกรมรองรับด้วยอ่านะ)
โดยในแต่ล่ะเทเบิ้ลนั้นก็ต้องมีการอ้างถึงเทเบิ้ลชั้นก่อนหน้าด้วยเช่น ตำบลนี้ อยู่ในอำเภอนี้ จังหวัดนี้ และภูมิภาคนี้ เป็นต้น เท่ากับว่าถ้าข้อมูลลึกลงไป100ชั้น ในเทเบิ้ลชั้นที่100ก็จะมีการผูกว่าเกี่ยวข้องกับใครบ้างในเทเบิ้ลตั้งแต่ 1-99เลย


ที่นี้เมื่อจะมีการเพิ่มข้อมูลลงไป เช่นว่ามีภูมิภาคใหม่ก็ทำฟอร์มลิ้ง tb_geography เพื่อเพิ่มข้อมูลลงไปตรงๆได้เลย
ถ้าจะเพิ่มตำบลล่ะโอเครว่าลิ้ง tb_district แต่ก็ต้องมีการให้ไล่ใส่ข้อมูลมาตั้งแต่ต้นด้วยว่าอยู่ในภูมิภาค->จังหวัด->อำเภออะไร เป็นต้น :shout:
แต่นี้คือมีการระบุ/คิดใว้ล่วงหน้าก่อนแล้วว่าข้อมูลที่จะเพิ่มเข้าไปนั้นอยู่ในชั้นไหนต้องเปิดฟอร์มใดเพื่อมาเพิ่มข้อมูลนั้นๆ หรือจะให้เป็นว่าเมื่อเปิดดูรายการใดๆแล้วให้แสดงรายการย่อยด้านล่างในฟอร์มย่อยแล้วให้สามารถเพิ่มรายการใหม่สดๆลงไปได้เลยลองหาวิธี,หาแนวทางทำดูครับ

ขอจบแนวทางเบื้องต้น(ประสาคนผ่านมาเห็น)ใว้เพียงเท่านี้ครับ :meaw:

3
รบกวนเพิ่มเติมครับ...
ได้นำคำแนะนำทั้งหมดมาลงทำงานในตารางโดยผ่านฟอร์ม...ปรากกฏว่า..ฟอร์มกับตารางไม่ค่อยจะสัมพันธ์กัน...พิมพ์ข้อมูลบนฟอร์มแต่ไม่ปรากฏในตารางต้องปิดตารางแล้วเปิดมาใหม่จึงจะปรากฏข้อมูล...ไม่ทราบผิดพลาดตรงไหนครับ

ติดตามต่อได้ที่กระทู้นี้เน้อ > การบันทึกข้อมูลลงตารางจากการใช้แบบฟอร์ม

4
อ้างถึง
ไม่ให้ช่องภูมิภาคเป็นช่องหลัก , เลือกจังหวัดเสร็จ > ช่องภูมิภาคขึ้นมาให้เลย
ผมขออนุญาตนำไฟล์ของ อ.ปิ่นณรงค์ ไปแก้นะครับ โดย
• เปลี่ยนช่องเลือกภาค(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:

5
ห้อง MS Access / : การใช้คำสั่ง iifซ้อน iif
« เมื่อ: 09 ธ.ค. 61 , 13:21:46 »
ต้องใส่ลูกน้ำคั่นวงเล็บปิดด้วยใหมครับนั้น ตย.ที่ผมใช้ =IIf([do_T15]=True,IIf([15_ราคา2]<>"",[15_ราคา2]+[15_ราคา],"0"),"0")
ปล.ถ้าใช้ ),),),),),),),),),),) คือมันไม่มีอะไรอยู่ข้างในมันจะแปลงร่างให้เป็น ))))))))))) ตามเดิมอยู่ดี ลองเป็น ,[%Efficiancy]),[%Efficiancy]),... แทนดูได้ใหมครับ :sweat:

โค๊ด: [Select]
Eff20Auto:
IIf(Not IsNull([Eff20]),[Eff20],
IIf(Not IsNull([Eff19]),[Eff19],
IIf(Not IsNull([Eff18]),[Eff18],
IIf(Not IsNull([Eff17]),[Eff17],
IIf(Not IsNull([Eff16]),[Eff16],
IIf(Not IsNull([Eff15]),[Eff15],
IIf(Not IsNull([Eff14]),[Eff14],
IIf(Not IsNull([Eff12]),[Eff12],
IIf(Not IsNull([Eff11]),[Eff11],
IIf(Not IsNull([Eff10]),[Eff10],
IIf(Not IsNull([Eff9]),[Eff9],[%Efficiancy])
,[%Efficiancy])
,[%Efficiancy])
,[%Efficiancy])
,[%Efficiancy])
,[%Efficiancy])
,[%Efficiancy])
,[%Efficiancy])
,[%Efficiancy])
,[%Efficiancy])
,[%Efficiancy])

6
ขอแนะนำนอกเรื่องว่า"พยายามไม่ตั้งชื่อกล่องข้อความหรืออะไรก็แล้วแต่เป็นภาษาไทยนะ" :prettiness:

(มือใหม่) อ่านซักนิดถ้าคิดจะใช้ Access ตอนที่ 1- ภาษาไทยใน Access By อ.OddyWriter

7
ฟอนต์ calibri ที่ผมมี ลองเอาไปลงทับทุกเครื่องดูครับ :shout:
หรือจะแบ่งไฟล์อัพมาให้ดูกันว่าใครลองเปิด+ลองปริ้นแล้วเป็นอย่างไรก็ดีนะ :smile:

8
จากรูปนี้ ในสายตาผมมองเห็นว่ามันใช้คนล่ะฟอนต์กันนะ ลองก๊อปฟอนต์ทั้งหมดไปลงอีกเครื่องดูครับ / หรือจะแก้ฟอร์มใหม่ให้ใช้ฟอนต์มาตรฐานที่คิดว่ามีทุกเครื่องก็จะดีนะ



เรื่องเวลา เป็นที่การตั้งค่าเวลาของเครื่องนั้นๆครับ หรือไม่ก็ต้องใช้วิธีเขียนมาโครตรวจสอบแล้วแก้ให้เมื่อปริ้นออกมาแล้วเป็นอย่างใดอย่างหนึ่งตรงกัน(อาจอธิบายไม่เก่ง ลองหาวิธีในเว็บนี้ดูครับ)

10
ทดสอบเปลี่ยนเดือน เลขสามตัวท้ายไม่กลับไปเริ่มนับ 001 นะครับ (ฉบับมาโครก็เช่นเดียวกัน)

  RunnungNum    myDate    Data 
  6107001   26-07-18    11
  6107002   26-07-18    22
  6108003   01-08-18    33
  6108004   01-08-18    44
  6109005   01-09-18    55
  6109006   01-09-18    66

11
ขอขอบคุณท่านปิ่นณรงค์ครับ :love: ใช้ได้สมบูรณ์ตรงตามเป๋าหมาย
ขอบคุณ อ.OddyWriter ด้วยครับ(จากมาโครเล็กๆ ต่อความมาซะยาวเลยนะนี่เรา :nice day:)
ขอบคุณ.preechaaesanan คุณ.Kxess ครับสำหรับแนวทางเพิ่มเติม :slobber:

12
ขออภัยด้วยครับ ที่ผมอยากให้มีผลคือเลข RunnungNum นะครับ
ตัวอย่าง
  รูปแบบเวลาของคอมพิวเตอร์    แสดงบน txtDate    RunnungNum  
Thailand
25-07-61
6107xxx
English
25-07-18
6107xxx

หรือก็คืออยากให้ RunnungNum เป็นปี พ.ศ.(61...)ไม่ว่าเครื่องๆนั้นจะใช้เวลาแบบใดนะครับ

13
สอบถามเพิ่มเติมครับ
"ทำอย่างไรให้ตรวจสอบว่าเครื่องๆนั้นใช้ปี ค.ศ. หรือ พ.ศ. ถ้าใช้ปี ค.ศ. ก็ให้บวกเป็นปี พ.ศ." เพื่อให้เลขที่บิลที่ออกมาไปแนวทางเดียวกันนะครับ
ปล.พยายามเอาโมดูลมาใช้กลับไปไม่เป็นซะงั้น :spook:
โค๊ด: [Select]
Public Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long
Public Declare Function GetLocaleInfo Lib "kernel32" _
   Alias "GetLocaleInfoA" _
(ByVal Locale As Long, _
   ByVal LCType As Long, _
   ByVal lpLCData As String, _
   ByVal cchData As Long) As Long

Public Function GetUserLocaleInfo(ByVal dwLocaleID As Long, ByVal dwLCType As Long) As String
   Dim sReturn As String
   Dim r As Long
   r = GetLocaleInfo(dwLocaleID, dwLCType, sReturn, Len(sReturn))
   If r Then
      sReturn = Space$(r)
      r = GetLocaleInfo(dwLocaleID, dwLCType, sReturn, Len(sReturn))
      If r Then GetUserLocaleInfo = Left$(sReturn, r - 1)
   End If
End Function

Public Function mYear(ByVal yourDate As Date) As Long
    mYear = Year(yourDate)
    If GetUserLocaleInfo(GetSystemDefaultLCID(), &H1009) = 7 Then mYear = Year(yourDate) - 543
End Function

Public Function bYear(ByVal yourDate As Date) As Long
    bYear = Year(yourDate)
    If GetUserLocaleInfo(GetSystemDefaultLCID(), &H1009) <> 7 Then bYear = Year(yourDate) + 543
End Function
เครดิต อาจารย์ TTT อ.yeadram อาจารย์ PichaiTC เช่นกันครับ

14
เป็นที่เครื่องจริงๆเอาไฟล์กลับไปใช้ที่บ้านใช้ได้ซะงั้น   :sweat:
เดี๋ยวพรุ้งนี้กลับไปแก้เครื่องเจ้าปัญหาตามท่าน OddyWriter อีกที :dizzy:


เปลี่ยนรูปแบบวันที่ของเครื่องที่ใช้จากแสดงชื่อเดือนด้วยตัวอักษร  เป็น--> แสดงชื่อเดือนเป็นตัวเลขสองหลัก = ใช้งานได้แล้วครับ  :fake smile:

15
ยังคงใช้ไม่ได้ครับ
เห็นฟ้อง 'Jul' หรือเป็นที่เครื่องผมตั้งค่าเวลาเป็นอังกฤษ ต้องแก้อย่างไรโดยยังคงรูปแบบเวลาใว้ครับนี่



16
จากไฟล์ตัวอย่างไหงผมรันแมโครไม่ได้ครับนี่ (เปิดใช้งานแมโครทั้งหมด by access 2013 แล้ว)


หน้า: [1] 2 3 4 ... 6