กระทู้เก่าบอร์ด อ.Yeadram
        
           3,127   14		  
          
					  
		    URL.หัวข้อ / 
		    URL
        
        ขอความช่วยเหลือด้วยครับ      
     
ขอบพระคุณมากๆครับ...
				14 Reply in this Topic. Dispaly 1  pages and you are on page number 1 
				
        
    2 @R03708    
        
  
      คืออย่างนี้ครับอาจารย์ 
1. ผมต้องการคลิกที่ปุ่ม 001 แล้วเอาค่า 001 ไปโชว์ใน กล่องข้อความครับ
2. จากนั้นก็บันทึก
3. ถ้าผมเพิ่มข้อมูล 001 ในกล่องข้อความอีก ให้แจ้งเตือน (หมายถึง ว่ามันซ้ำกันน่ะครับ )
หมายเหตุ...มันเป็นตารางเดียว ฟอร์มเดียวเลยครับ
    
  1. ผมต้องการคลิกที่ปุ่ม 001 แล้วเอาค่า 001 ไปโชว์ใน กล่องข้อความครับ
2. จากนั้นก็บันทึก
3. ถ้าผมเพิ่มข้อมูล 001 ในกล่องข้อความอีก ให้แจ้งเตือน (หมายถึง ว่ามันซ้ำกันน่ะครับ )
หมายเหตุ...มันเป็นตารางเดียว ฟอร์มเดียวเลยครับ
        
    3 @R03724    
        
  
      มีปัญหาครับท่าน NOVA  หลังจากที่ผมลองเขียนโค๊ตที่ ปุ่มคลิก
Private Sub Command4_Click()
If DCount("id", "TBFIRST", "id=Forms!Form1.text0 AND date in =Forms! form1.text0") > 0 Then
MsgBox "ทดสอบดู"
Else
Text0 = 1
End If
End Sub
มันแจ้ง Error ในรูปที่แนบมาครับผม
 
    
    
  Private Sub Command4_Click()
If DCount("id", "TBFIRST", "id=Forms!Form1.text0 AND date in =Forms! form1.text0") > 0 Then
MsgBox "ทดสอบดู"
Else
Text0 = 1
End If
End Sub
มันแจ้ง Error ในรูปที่แนบมาครับผม
 
        
    4 @R03725    
        
  
      ดูที่ code AND date in =Forms! form1.text0
date in เป็นชื่อ field ? ถ้าใช่ ลองแก้เป็น [date in] หรือ date_in
Forms! form1 ก็อย่าให้มีช่องว่างครับให้พิมพ์เป็น Forms!form1
    
  date in เป็นชื่อ field ? ถ้าใช่ ลองแก้เป็น [date in] หรือ date_in
Forms! form1 ก็อย่าให้มีช่องว่างครับให้พิมพ์เป็น Forms!form1
        
    5 @R03727    
        
  
      ได้แล้วครับขอบคุณครับผม....
ถามอีกครับ
1. ถ้าผมจะใส่ ตัวอักษรข้างหน้าเป็น A001 ได้มั้ย ผมลองแล้วมันไม่ขึ้นครับ ได้แต่ตัวเลขอย่างเดียว
2. ผมไม่แน่ใจว่า ตรง โค๊ตตรงนี้ If DCount("id", "TBFIRST", "id=Forms!Form1.text0 AND [date in]=Forms! form1.text0") > 0 Then
MsgBox "ทดสอบดู ว่าซ้ำมั้ย" เป็นการตรวจสอบ ข้อมูลซ้ำ ใช่หรือไม่ ถ้าใช่ มันไม่แจ้งเตือนครับ
3. ผมอยากให้มันแจ้งเตือน อย่างนี้ครับ
- ถ้าเป็นวันเดียวกัน คือ ตรง text0=a001 มันจะต้องแจ้งเตือนว่าซ้ำครับ
- ถ้าเ็ป็นวันถัดไป คือ สามารถใ่ส่ข้อมูลได้ครับ ไม่ต้องแจ้งเตือนซ้ำ
หมายเหตุ .... ข้อมูลที่ว่า คือที่ช่อง text0 นะครับผม
ถามงง ไปมั้ยน้อ....
    
    
  ถามอีกครับ
1. ถ้าผมจะใส่ ตัวอักษรข้างหน้าเป็น A001 ได้มั้ย ผมลองแล้วมันไม่ขึ้นครับ ได้แต่ตัวเลขอย่างเดียว
2. ผมไม่แน่ใจว่า ตรง โค๊ตตรงนี้ If DCount("id", "TBFIRST", "id=Forms!Form1.text0 AND [date in]=Forms! form1.text0") > 0 Then
MsgBox "ทดสอบดู ว่าซ้ำมั้ย" เป็นการตรวจสอบ ข้อมูลซ้ำ ใช่หรือไม่ ถ้าใช่ มันไม่แจ้งเตือนครับ
3. ผมอยากให้มันแจ้งเตือน อย่างนี้ครับ
- ถ้าเป็นวันเดียวกัน คือ ตรง text0=a001 มันจะต้องแจ้งเตือนว่าซ้ำครับ
- ถ้าเ็ป็นวันถัดไป คือ สามารถใ่ส่ข้อมูลได้ครับ ไม่ต้องแจ้งเตือนซ้ำ
หมายเหตุ .... ข้อมูลที่ว่า คือที่ช่อง text0 นะครับผม
ถามงง ไปมั้ยน้อ....
        
    6 @R03728    
        
  
      ตอบข้อ 1 
ถ้าอยากใส่ เป็น A001 ก็แก้ code
text0=001 เป็น text0=A001
ตอบข้อ 2,3
code if.... เป็น code ที่ตรวจดูว่ามีค่านั้นในวันที่นั้นอยู่ในตารางหรือไม่
ถ้ามีก็แจ้งเตือนตาม msgbox ที่กำหนดนะครับ ถ้าไม่มีจึงจะกำหนดให้ text0 รับค่าตามปุ่มที่กดนะครับ
    
  ถ้าอยากใส่ เป็น A001 ก็แก้ code
text0=001 เป็น text0=A001
ตอบข้อ 2,3
code if.... เป็น code ที่ตรวจดูว่ามีค่านั้นในวันที่นั้นอยู่ในตารางหรือไม่
ถ้ามีก็แจ้งเตือนตาม msgbox ที่กำหนดนะครับ ถ้าไม่มีจึงจะกำหนดให้ text0 รับค่าตามปุ่มที่กดนะครับ
        
    7 @R03730    
        
  
      ได้แล้วครับ บางส่วน !!!!!  ไม่รู้ผิดตรงไหน
มีปัญหา ตรงที่ text0 ครับ
- เปลี่ยนจาก text0=001 เป็น text0=A001 ไม่ได้ ไม่โชว์ที่กล่องข้อความครับ
- ถ้าเป็นตัวเลข ไม่มีพยัญชนะ คือ A มันจะโชว์
หมายเหตุ...text0 มาจากตาราง TBFISRT ชื่อฟิลด์ id ชนิด text ขนาดเขตข้อมูล 50 ครับ
......ขอบพระคุณ ล่วงหน้าครับผม.......
    
    
  มีปัญหา ตรงที่ text0 ครับ
- เปลี่ยนจาก text0=001 เป็น text0=A001 ไม่ได้ ไม่โชว์ที่กล่องข้อความครับ
- ถ้าเป็นตัวเลข ไม่มีพยัญชนะ คือ A มันจะโชว์
หมายเหตุ...text0 มาจากตาราง TBFISRT ชื่อฟิลด์ id ชนิด text ขนาดเขตข้อมูล 50 ครับ
......ขอบพระคุณ ล่วงหน้าครับผม.......
        
    8 @R03731    
        
  
      เข้ามาแอบเก็บครับ ท่านพจน์น้อยช่วยลงโค๊ตเต็ม ที่ทำได้ ให้ด้วยนะครับ :-) ขอบคุณท่านNovaและท่านพจน์น้อยด้วยครับ    
    
  
        
    9 @R03732    
        
  
      อันนี้คือ โค๊ตเต็ม ครับ !!!!  ยังไม่ครอบคลุมน่ะครับ....
Private Sub Command5_Click()
If DCount("id", "TBFIRST", "id=Forms!Form1.text0 AND [date in] =Forms!Form1.text8") > 0 Then
MsgBox "รายการซ้ำ ตรวจสอบข้อมูลอีกครั้ง"
Else
Text0 = 222
End If
End Sub
--------------------------------------------
id คือ ฟิลด์จากตาราง = ข้อมูล Text
text0 คือ ช่องรายการ = ฟอร์ม
date in คือ ฟิลด์จากตาราง = ข้อมูลวันที่
text8 คือ ช่องวันที่ = ฟอร์ม
ส่วน Else Text0 = 222 น่าจะเป็นข้อมูลของ ปุ่มCommand ครับ (ผมก็เดาเอานะ เพราะยังหัดขับ เหมือนกัน ไม่รู้ว่าดูโค๊ต ถูกหรือเปล่า...นะครับ ท่านปรมาจารย์ ช่วยแนะนำด้วย....
----------------------------------------------------------------
เท่าที่ใช้ดูก็ใช้ได้ แต่ยังไม่ครอบคลุมครับผม ยังไงก็ขอบพระคุณท่าน NOVA มากมายครับ....ก็ช่วยกันศึกษากันไปครับ จนกว่า Access จะไม่มีคำตอบให้เรา ชาว Ac ครับ
---------------------------------------------------------------
ปัญหามีดังนี้ครับผม คือว่า
1. เมื่อคลิกที่ปุ่ม Command (ปุ่มที่1) ค่าจากปุ่ม คือ 222 มันจะโผล่ที่ช่อง รายการ คือ Id บันทึกเป็นวันที่ 6-10-52
2. ถ้าคลิกที่ปุ่ม Command (ปุ่มที่ 1) ค่าจากปุ่ม คือ 222 มันจะโผล่ที่ช่อง รายการ คือ Id บันทึกเป็นวันที่ 6-10-52 เหมือนเดิม จะแจ้งเตือนก็ต่อเมื่อ คลิกปุ่มเดิม อีกครั้ง "รายการซ้ำ ตรวจสอบข้อมูลอีกครั้ง" ครับ มันเป็น จะอี้ิ เด้อ.....
---------------------------------------------------------------
คำถาม ถามข้อที่ 2 ครับ....
- ถ้าจะให้มันแจ้งเตือนก่อนที่จะโผล่ต้องทำจัง ดั๋ยน้อ ก็คือให้ตรวจสอบก่อนจะส่งค่าไปที่ ช่องรายการ ครับผม เพราะค่ามันซ้ำกัน วันที่เดียวกันนะครับ ท่าน เช่น
บันทึกวันที่ 6-10-52 ข้อมูลเดิม ซ้ำ
A001 บันทึกแล้ว
A001 กำลังส่งค่าไป แจ้งเตือนว่า " ซ้ำ "
บันทึกวันที่ 7-10-52 ข้อมูลเดิม บันทึกได้
A001 ไม่ซ้ำ
ให้มันเป็นจั่งซี้ จั่งซี้......ขอบพระคุณปรมานจารย์ทุกท่าน ครับ.....
    
  Private Sub Command5_Click()
If DCount("id", "TBFIRST", "id=Forms!Form1.text0 AND [date in] =Forms!Form1.text8") > 0 Then
MsgBox "รายการซ้ำ ตรวจสอบข้อมูลอีกครั้ง"
Else
Text0 = 222
End If
End Sub
--------------------------------------------
id คือ ฟิลด์จากตาราง = ข้อมูล Text
text0 คือ ช่องรายการ = ฟอร์ม
date in คือ ฟิลด์จากตาราง = ข้อมูลวันที่
text8 คือ ช่องวันที่ = ฟอร์ม
ส่วน Else Text0 = 222 น่าจะเป็นข้อมูลของ ปุ่มCommand ครับ (ผมก็เดาเอานะ เพราะยังหัดขับ เหมือนกัน ไม่รู้ว่าดูโค๊ต ถูกหรือเปล่า...นะครับ ท่านปรมาจารย์ ช่วยแนะนำด้วย....
----------------------------------------------------------------
เท่าที่ใช้ดูก็ใช้ได้ แต่ยังไม่ครอบคลุมครับผม ยังไงก็ขอบพระคุณท่าน NOVA มากมายครับ....ก็ช่วยกันศึกษากันไปครับ จนกว่า Access จะไม่มีคำตอบให้เรา ชาว Ac ครับ
---------------------------------------------------------------
ปัญหามีดังนี้ครับผม คือว่า
1. เมื่อคลิกที่ปุ่ม Command (ปุ่มที่1) ค่าจากปุ่ม คือ 222 มันจะโผล่ที่ช่อง รายการ คือ Id บันทึกเป็นวันที่ 6-10-52
2. ถ้าคลิกที่ปุ่ม Command (ปุ่มที่ 1) ค่าจากปุ่ม คือ 222 มันจะโผล่ที่ช่อง รายการ คือ Id บันทึกเป็นวันที่ 6-10-52 เหมือนเดิม จะแจ้งเตือนก็ต่อเมื่อ คลิกปุ่มเดิม อีกครั้ง "รายการซ้ำ ตรวจสอบข้อมูลอีกครั้ง" ครับ มันเป็น จะอี้ิ เด้อ.....
---------------------------------------------------------------
คำถาม ถามข้อที่ 2 ครับ....
- ถ้าจะให้มันแจ้งเตือนก่อนที่จะโผล่ต้องทำจัง ดั๋ยน้อ ก็คือให้ตรวจสอบก่อนจะส่งค่าไปที่ ช่องรายการ ครับผม เพราะค่ามันซ้ำกัน วันที่เดียวกันนะครับ ท่าน เช่น
บันทึกวันที่ 6-10-52 ข้อมูลเดิม ซ้ำ
A001 บันทึกแล้ว
A001 กำลังส่งค่าไป แจ้งเตือนว่า " ซ้ำ "
บันทึกวันที่ 7-10-52 ข้อมูลเดิม บันทึกได้
A001 ไม่ซ้ำ
ให้มันเป็นจั่งซี้ จั่งซี้......ขอบพระคุณปรมานจารย์ทุกท่าน ครับ.....
        
    10 @R03733    
        
  
      ขอบคุณนะครับ ;-) เผื่อจะมีอะไรที่ใช้แบบนี้บ้าง    
    
  
        
    11 @R03737    
        
  
      Private sub command5_click()
filText0("command5")
end sub
Private sub command6_click()
filText0("command6")
end sub
Private sub command7_click()
filText0("command7")
end sub
sub filText0(ctl as string)
dim xs as integer
dim mLable as string
mLabel = "A" & me(ctl).caption
xs = dcount("id","tbFirst","[id] Like '" & text0 & "' AND cdate([Date in]) = cdate('" & text8 & "')")
if xs >0 then
msgbox "มีรายการอยู่แล้ว ไม่อนุญาตให้บันทึก"
'me.undo
else
text0= mLabel
end if
end sub
    
  filText0("command5")
end sub
Private sub command6_click()
filText0("command6")
end sub
Private sub command7_click()
filText0("command7")
end sub
sub filText0(ctl as string)
dim xs as integer
dim mLable as string
mLabel = "A" & me(ctl).caption
xs = dcount("id","tbFirst","[id] Like '" & text0 & "' AND cdate([Date in]) = cdate('" & text8 & "')")
if xs >0 then
msgbox "มีรายการอยู่แล้ว ไม่อนุญาตให้บันทึก"
'me.undo
else
text0= mLabel
end if
end sub
        
    12 @R03743    
        
  
      อันนี้ ยิ่ง เง็ง ไปกัน ใหญ่เลย
แต่จะถามว่า
Private sub command5_click()
filText0("command5")
sub filText0(ctl as string)
dim xs as integer
dim mLable as string
mLabel = "A" & me(ctl).caption
xs = dcount("id","tbFirst","[id] Like '" & text0 & "' AND cdate([Date in]) = cdate('" & text8 & "')")
if xs >0 then
msgbox "มีรายการอยู่แล้ว ไม่อนุญาตให้บันทึก"
'me.undo
else
text0= mLabel
end if
end sub
end sub
เอาไปใช้แบบนี้ ป่าวคับ....
    
  แต่จะถามว่า
Private sub command5_click()
filText0("command5")
sub filText0(ctl as string)
dim xs as integer
dim mLable as string
mLabel = "A" & me(ctl).caption
xs = dcount("id","tbFirst","[id] Like '" & text0 & "' AND cdate([Date in]) = cdate('" & text8 & "')")
if xs >0 then
msgbox "มีรายการอยู่แล้ว ไม่อนุญาตให้บันทึก"
'me.undo
else
text0= mLabel
end if
end sub
end sub
เอาไปใช้แบบนี้ ป่าวคับ....
        
    13 @R03746    
        
  
      เขียนไปอย่างที่ผมเขียนนั่นแหละครับ
ไม่ต้องย้ายมัน
procedure มันซ้อนกันไม่ได้ครับ
เมื่อกดปุ่ม command5 ให้มันไปเรียกใช้โปรแกรมย่อย
เมื่อกดปุ่ม command6 ก็ให้มันไปเรียกใช้โปรแกรมย่อย
เพราะว่าการทำงานของสองปุ่มมันเหมือนกัน ดังนั้น เพื่อประหยัดเวลาในการเขียน ในการแก้ไขในภายหลัง เราจึงเขียนเป็นโปรแกรมย่อย แล้วค่อยเรียกใช้
ในปุ่มคำสั่ง command5 แม้มันจะมีแค่คำสั่งเดียวก็ไม่ต้องกังวลว่ามันจะทำงานไม่ได้ เพราะคำสั่งเดียวที่มันมี เป็นคำสั่งเรียกใช้โปรแกรมย่อยตัวอื่น ซึ่งยังมีอีกหลายๆ คำสั่งให้มันทำครับ
    
    
  ไม่ต้องย้ายมัน
procedure มันซ้อนกันไม่ได้ครับ
เมื่อกดปุ่ม command5 ให้มันไปเรียกใช้โปรแกรมย่อย
เมื่อกดปุ่ม command6 ก็ให้มันไปเรียกใช้โปรแกรมย่อย
เพราะว่าการทำงานของสองปุ่มมันเหมือนกัน ดังนั้น เพื่อประหยัดเวลาในการเขียน ในการแก้ไขในภายหลัง เราจึงเขียนเป็นโปรแกรมย่อย แล้วค่อยเรียกใช้
ในปุ่มคำสั่ง command5 แม้มันจะมีแค่คำสั่งเดียวก็ไม่ต้องกังวลว่ามันจะทำงานไม่ได้ เพราะคำสั่งเดียวที่มันมี เป็นคำสั่งเรียกใช้โปรแกรมย่อยตัวอื่น ซึ่งยังมีอีกหลายๆ คำสั่งให้มันทำครับ
        
    14 @R03751    
        
    
      ใช้ได้แล้วครับ  ขอบคุณท่าน อาจารย์ yeadram ครับ ... 
ส่วนอื่นๆผมจะนำไปประยุกต์ใช้ครับผม มีประโยชน์อย่างมากมาย
    
  ส่วนอื่นๆผมจะนำไปประยุกต์ใช้ครับผม มีประโยชน์อย่างมากมาย
      Time: 0.2880s
    
      
		
กด 001 ให้ช่องรายการโชว์ "001"
* แล้วมันโชว์น่ะ มันโชว์อย่างเดียว หรือมันเซฟด้วย ช่องรายการ ผูกกับฟิลด์อะไรหรือเปล่า เชื่อมกับตารางไหนหรือเปล่า หรือว่ามันเป็นคอนโทรลเดี่ยวๆ แบบ unbound
ถ้าผมต้องการให้แจ้งเตือนว่า 001 ได้มีข้อมูลแล้ว (ในวันเดียวกันนะครับ แต่ถ้าเป็นวันถัดไปก็สามารถบันทึกข้อมูลได้)
* ภาษาไทยคุณอ่อนมากนะครับ เหมือนๆ จะเป็นประโยคขัดแย้ง เพราะใช้คำว่า "แต่" เชื่อม แต่เนื้อความของมันไม่เห็นจะขัดแย้งกันเลย ลองวิเคราะห์ดูครับ
1) ถ้ามีข้อมูลอยู่แล้ว ให้แจ้งเตือน (ให้แจ้งเตือน)
2) ถ้าไม่มีข้อมูลอยู่ก่อน สามารถบันทึกข้อมูลได้เลย (ให้บันทึก)
อนุประโยคหมายเลข 1 กับหมายเลข 2 มันไม่ได้ขัดแย้งกันเลย คุณใช้คำว่า "แต่" มาเชื่อม
ข้อ 1 แจ้งเตือนแล้วทำอะไรต่อ จะให้บันทึกไหม
ข้อ 2 ให้บันทึกแล้วจะแจ้งเตือนไหม
ผมไม่ใช่ครูภาษาไทยหรอกครับ ไม่ซีเรียสมากนักหรอกเรื่องใช้คำ แต่บางทีถ้าคนถามระบุไม่ชัดเจนหรือเขียนให้คนอ่านสับสน มันก็ไม่เข้าใจกันสักทีนะครับ แล้วคุณก็จะได้คำตอบช้า มัน งง ครับ ไม่แน่ใจว่าจะตอบได้ถูกประเด็นหรือเปล่า เพราะการโพสต์บนเว็บ มันจะบันทึกไว้อีกนาน ถ้าตอบผิดประเด็นในกระทู้นั้นๆ ทำให้คนอื่นที่เข้าค้นมาเจอในภายหลังเขาก็จะผิดหวังกันไปตามๆ กัน
ถ้าถาม-ตอบกันใน chat ใน msn อาจจะตอบผิดประเด็นก็ได้ เพราะมันเดี๋ยวก็หายไปแล้ว ไม่ได้บันทึกเอาไว้ รู้กันสองคน