สมัครสมาชิก

แสดงกระทู้

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

หน้า: [1] 2 3 4 ... 8
1
ใส่เป็น
โค๊ด: [Select]
TotalAmount: CDbl(DSum("[TotalAmount]","QProBudget2","[Year_only]='" & [Year_only] & "' AND [Mon_only]= '" & [Mon_only] & "' AND [BUYER]= '" & [Customer_Name] & "'"))
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

2
ลองดูตัวอย่างนี้นะครับ
สร้าง ปุ่มขึ้นมา 1 ปุ่มใส่คำสั่งนี้เข้าไป ตารางชื่อ T1 Field ชื่อ F1
สีแดงคือชื่อของ CommandBotton ครับ Event เมื่อคลิ๊ก


Private Sub Command0_Click()
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE T1 SET T1.F1 = Null;"
DoCmd.SetWarnings True
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

3
เรียนอาจารย์

         ผมต้องการทำปุ่มCMD  เพื่อลบข้อมูลที่พิว F1 ลบทุกRecord คือลบเฉพาะพิวนี้นะครับ ที่ตาราง T1 จะเขียนคำสั่งยังไงครับ
เข้าใจว่าน่าจะเป็น SQL  Update หรือเปล่าครับ ลบกวนแนะนำด้วยครับ

ขอบคุณมากครับ
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

4
รบกวนสอบถามครับ ถ้าในคิวรี่มี่2ฟิวด์คือ ฟิวด์A กับฟิวด์B
ต้องการให้ที่ฟิวด์B = ฟิวด์A ลบ(-) ฟิวด์Aของrecordก่อนหน้า ต้องใช้สูตรยังไงครับ

ถ้า อันล่างลบอันบน น่าจะประมาณนี้ครับคุณประจักษ์

โค๊ด: [Select]
SELECT Table1.ID, Table1.Item, Table1.A, DLookUp("[A]","Table1","[ID]=" & [ID]-1)-NZ([a],0) AS B
FROM Table1;

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

5
ห้อง MS Access / : สอบถามคำสั่ง Docmd.Movesize
« เมื่อ: 10 ม.ค. 62 , 14:40:03 »
ที่ คุณสมบัติฟอร์ม FrmDbLine2_Eng1
เป็นแบบนี้หรือยังครับ


ใส่เป็น

  DoCmd.MoveSize 30000, 0, 0, 0

เลยครับ  :cool: :cool:
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

6
ห้อง MS Access / : การใช้คำสั่ง iifซ้อน iif
« เมื่อ: 11 ธ.ค. 61 , 11:50:48 »
ปัญหาการใช้ Expression จะมี 2 อย่างครับ คือ 1. พิมพ์ตัวอักษรมากเกินไป จำไม่ได้แล้วเท่าไหร่แต่ก็มากอยู่ 2. ใช้นิพจน์ซ้อนกันเกินประมาณ 13 ตัวมั้ง จำตัวเลขไม่ได้
ปัญหาของกระทู้นี้คือใช้นิพจน์ซ้อนกันเยอะเกินไป ไม่ว่าจะเป็น IIf ซ้อน IIf หรือใช้ฟังก์ชั่น Switch() ก็ไม่สามารถซ้อนกันเกินได้ จึงต้องใช้การแยกฟิลด์ไม่ให้เกินครับ
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

7
ห้อง MS Access / : การใช้คำสั่ง iifซ้อน iif
« เมื่อ: 11 ธ.ค. 61 , 08:48:20 »
น่าจะเกิดจาก ความยาว หรือจำนวนอักขระ มากเกินไปครับ เวอร์ชั่นเก่า ยิ่งจำกัดแค่ 255 ตัวอักษร
แนะนำให้เขียนฟังชั่นใช้เองดีกว่าครับ
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

8
ห้อง 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]) ไปเรื่อยๆ อีก ถ้ายังไม่หมดก็ต่ออีกฟิลด์ แล้วเราก็เอาฟิลด์สุดท้ายไปใช้งานครับ พอนึกภาพออกไม๊ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

9
ห้อง 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])
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

10
ห้อง MS Access / : การใช้คำสั่ง iifซ้อน iif
« เมื่อ: 08 ธ.ค. 61 , 19:23:29 »
ต้องขอความรู้ อาจารย์ สันติสุข ,TTT , OddyWriter และ ท่านอื่นๆ แล้วละครับ  :cool: :cool:
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

11
ห้อง MS Access / : การใช้คำสั่ง iifซ้อน iif
« เมื่อ: 08 ธ.ค. 61 , 09:40:27 »
ผมรบกวนสอบถามหน่อยนะครับ มีคำสั่งอื่นแทนการใช้ iif ซ้อนไหมครับ ผมใช้ iif ใน expression แต่พอใช้ซ้อนหลายๆชั้นมันเหมือนเกินขีดจำกัด และขึ้น error ครับ พอจะมีคำสั่งอื่นใช้แทนหรือเปล่าครับ


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])))))))))))
ใช้ Switch Function แทนดีไหมคับ
Switch ( expression1, value1, expression2, value2, ... expression_n, value_n )
โค๊ด: [Select]
Eff20Auto: Switch([Eff20]<>"",[Eff20],[Eff19]<>"",[Eff19],[Eff18]<>"",[Eff18],[Eff17]<>"",[Eff17],[Eff16]<>"",[Eff16],[Eff15]<>"",[Eff15],[Eff14]<>"",[Eff14],[Eff13]<>"",[Eff13],[Eff12]<>"",[Eff12],[Eff11]<>"",[Eff11],[Eff10]<>"",[Eff10],[Eff9]<>"",[Eff9],TRUE,[%Efficiancy])
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

12
ไฟล์ที่แนบมาแตกไฟล์ไม่ได้ครับคุณปิ่นณรงค์

ปกติผม แตกไฟล์กับ 7zip ครับลองดูอันใหม่ครับว่าได้ไหม
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

13
โอเคได้ละครับ พอดีไปค้นหาวิธีจากเว็บนอกได้มาประมาณนี้ คือ
ให้เราสร้างฟอร์มตามที่ต้องการโดยเราจะใช้ ความละเอียดจากเครื่องหลัก เพื่อใช้อ้างอิงว่าค่าเริ่มต้นของ form นั้นได้สร้างจากค่าความละเอียดเท่าไร
จากตัวอย่างผมได้ลองไปตั้งค่าความละเอียด 800x600 แล้วลองสร้างฟอร์มให้ได้ขนาดพอดีครับหน้าจอที่ต้องการแสดงครับ

วิธีการทดสอบ
1.ให้ลองตั้งค่าความละเอียด 800x600 แล้วลองเปิดฟอร์มดู (เพื่อดูว่าฟอร์มที่สร้างมาตอนแรกเป็นอย่างไร) ถ้าคิดว่าตำแหน่งจัดวางโอเคแล้วก็เรียบร้อย

2.ให้ลองตั้งค่าความละเอียด ตามปกติของเครื่องนั้นเลย แล้วลองเปิดฟอร์มดูเพื่อดูความเปลี่ยนแปลงครับ ฟอร์มและตัวคอนโทรลที่เปิดขึ้นมา จะขนาดใหญ่หรือเล็กตามขนาดของจอปลายทางที่เราต้องการแสดงครับจากตัวอย่างเครื่องผมปรับได้สุดแค่นี้ครับ 1366*768  pixels


ถ้าแบบนี้โอเคเดี่ยวจะอธิบายการนำ Code ไปประยุกต์ใช้อีกทีคับ ส่วนตัวอย่าง Code โหลดได้ด้านล่างคับ มีทั้งแบบ 64Bit และ 32Bit ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

14
ต้องกำหนดทุกฟอร์มเลยหรือเปล่าครับ แล้วถ้าเราปิดหรือออกจากโปรแกรม ความละเอียดหน้าจอจะกลับมาที่ความละเอียดปกติมั้ยครับ

เฉพาะ Event Form_Open ของฟอร์มล๊อกอินคับ เพราะมันต้องแสดงขึ้นมาก่อนอยู่แล้ว
ส่วนความละเอียดหน้าจอ ค่าปกติต้องดูว่ากำหนดที่เท่าไร ผมจะได้เพิ่ม Code คืนค่าปกติ เมื่อปิดโปรแกรม


แต่ถ้าเราจะให้มัน Shrinker หรือ Stretcher เดี่ยวขอลองทำดูก่อนนะครับ ได้ยังไงเดี่ยวมาอัพเดทผมว่าน่าจะพอทำได้อยู่คับ

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

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

16
ถ้าต้องการให้แบบฟอร์ม พอดีกับจอของ Users ผมว่าน่าจะต้องมีการ lock spec ความละเอียดนะครับ
เช่น ตั้งไว้ที่ 1,024x768 ทุกเครื่อง รวมทั้งเครื่องที่สร้างฟอร์มด้วย
เพราะถ้าหลายๆเครื่องมีความหลากหลายในค่าความละเอียด ก็ไม่น่าจะเต็มจอได้ทุกจอนะครับ
ไม่รู้ผมเข้าใจถูกป่าว
ถ้าผิด ท่านผู้รู้ช่วยแก้ด้วยนะครับ

จากแนวคิิดของท่านงั้น ก็สร้างคำสั่งให้ปรับขนาดหน้าจอปลายทางอัตโนมัติเมื่อเปิดฟอร์ม หรือ Event ที่ต้องการไปเลยดีไหม เช่น อยากตั้ง ขนาด 1,024x768 กับทุกเครื่อง ก็ให้เปิดฟอร์มมาแล้ว ขนาดจะเปลี่ยนตามเลย Code ตามนี้ครับ

Code นี้วางใน Mudule

โค๊ด: [Select]
Type RECT
x1 As Long
y1 As Long
x2 As Long
y2 As Long
End Type
Declare Function GetDesktopWindow Lib "User32" () As Long
Declare Function GetWindowRect Lib "User32" _
(ByVal hWnd As Long, rectangle As RECT) As Long

Private Declare Function ChangeDisplaySettings Lib "User32" Alias _
"ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwFlags As Long) As Long
Private Declare Function EnumDisplaySettings Lib "User32" Alias _
"EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, ByVal iModeNum As _
Long, lpDevMode As Any) As Boolean
 
Const DM_PELSWIDTH = &H80000
Const DM_PELSHEIGHT = &H100000
Const CCFORMNAME = 32
Const CCDEVICENAME = 32
 
Private Type DEVMODE
dmDeviceName As String * CCDEVICENAME
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
 
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
 
dmFormName As String * CCFORMNAME
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Public Function Change_Resolution(iWidth As Single, iHeight As Single)
Dim DevM As DEVMODE
Dim a As Boolean
Dim i As Long
Dim b As Long
i = 0
Do
a = EnumDisplaySettings(0&, i&, DevM)
i = i + 1
Loop Until (a = False)
DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
DevM.dmPelsWidth = iWidth
DevM.dmPelsHeight = iHeight
b = ChangeDisplaySettings(DevM, 0)
End Function
Function GetScreenResolution() As String
Dim R As RECT
Dim hWnd As Long
Dim RetVal As Long
hWnd = GetDesktopWindow()
RetVal = GetWindowRect(hWnd, R)
GetScreenResolution = (R.x2 - R.x1) & "x" & (R.y2 - R.y1)
End Function
Sub SetAutoScreen()
Call Change_Resolution(1024, 768) ' กำหนดขนาดตรงนี้
End Sub

ต่อมาไปกำหนด Event Form_Open

โค๊ด: [Select]
Private Sub Form_Open(Cancel As Integer)
Call SetAutoScreen
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

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