กระทู้เก่าบอร์ด อ.Yeadram
        
           2,974   9		  
          
					  
		    URL.หัวข้อ / 
		    URL
        
        สอบถามวิธีไม่บันทึกข้อมูลจนกว่าจะกดปุ่ม Reccord      
    
      ตอนนี้มันจะบันทึกข้อมูลลงใน table ทันทีที่พิมพ์ แต่อยากจะหาวิธีไม่ให้บันทึกจนกว่าจะกด Reccord ไม่ทราบว่าต้องใช้วิธีไหนครับ
รบกวนสอบถามอาจารย์ด้วยครับ
    
  รบกวนสอบถามอาจารย์ด้วยครับ
				9 Reply in this Topic. Dispaly 1  pages and you are on page number 1 
				
        
    2 @R07082    
        
  
      ขอบคุณอาจารย์ yeadram มากๆครับที่ช่วยให้คำแนะนำ    
    
  
        
    3 @R07086    
        
  
      รบกวนสอบถามอาจารย์ด้วยครับไม่ทราบว่าทำพลาดตรงไหน
ทีแรกลองทำโดยใช้ชื่อฟอร์มและตารางตามข้างล่างสามารถใช้งานได้ตามปกติ
table1
field1..2..3
text1..2..3
แต่พอเปลี่ยนชื่อให้เป็นข้อมูลตามจริงแล้วลองกด reccord อีกรอบกลับใช้งานไม่ได้ เป็น pop up ขึ้นว่า
"Run-time error '-2147217900 (80040e14)':
syntax error in INSERT INTO statement."
    
  ทีแรกลองทำโดยใช้ชื่อฟอร์มและตารางตามข้างล่างสามารถใช้งานได้ตามปกติ
table1
field1..2..3
text1..2..3
แต่พอเปลี่ยนชื่อให้เป็นข้อมูลตามจริงแล้วลองกด reccord อีกรอบกลับใช้งานไม่ได้ เป็น pop up ขึ้นว่า
"Run-time error '-2147217900 (80040e14)':
syntax error in INSERT INTO statement."
        
    4 @R07087    
        
  
      ขอเพิ่มเติมนะครับ
เมื่อกด debug เข้าไปดูจะเห็นว่า
CurrentProject.Connection.Execute sq ได้กลายเป็นแถบสีเหลือง
ตอนนี้จนปัญญาจริงๆ ครับ ไม่รู้ว่าจะไปแก้ตรงไหน ต้องขอรบกวนอาจารย์ด้วยนะครับ
    
  เมื่อกด debug เข้าไปดูจะเห็นว่า
CurrentProject.Connection.Execute sq ได้กลายเป็นแถบสีเหลือง
ตอนนี้จนปัญญาจริงๆ ครับ ไม่รู้ว่าจะไปแก้ตรงไหน ต้องขอรบกวนอาจารย์ด้วยนะครับ
        
    5 @R07088    
        
  
      ก่อนจะถึงบรรทัดคำสั่งให้ execute
ให้แทรกบรรทัด debug ดูครับ
debug.print sq
แล้วลองรันดู มันจะ error อีกครั้ง ไม่เป็นไร
ให้เรากด Ctl+G เพื่อเปิดดูหน้าต่าง debug ซึ่งมันจะปริ๊นท์สายอักขระที่คุณต่อไว้ มาให้ดู ให้คุณลองตรวจสอบดูจากตรงนั้นครับ ว่า คุณลืมต่อ อักขระหรือเครื่องหมายสำคัญๆ อะไรไปหรือเปล่า อย่าลืมความสำคัญของชนิดข้อมูลด้วยนะครับ
- ถ้าเป็น string ต้องคร่อมด้วย single quote ( ' )
- ถ้าเป็น number ไม่ต้องคร่อม
- ถ้าเป็น DateTime อาจต้องคร่อมด้วยเครื่องหมาย sharp ( # )
ถ้าดูไม่ออก ลองคัดลอกสายอักขระที่มัน Debug ออกมา เอามาโพสต์ให้ดูอีกรอบก็ได้ครับ
    
  ให้แทรกบรรทัด debug ดูครับ
debug.print sq
แล้วลองรันดู มันจะ error อีกครั้ง ไม่เป็นไร
ให้เรากด Ctl+G เพื่อเปิดดูหน้าต่าง debug ซึ่งมันจะปริ๊นท์สายอักขระที่คุณต่อไว้ มาให้ดู ให้คุณลองตรวจสอบดูจากตรงนั้นครับ ว่า คุณลืมต่อ อักขระหรือเครื่องหมายสำคัญๆ อะไรไปหรือเปล่า อย่าลืมความสำคัญของชนิดข้อมูลด้วยนะครับ
- ถ้าเป็น string ต้องคร่อมด้วย single quote ( ' )
- ถ้าเป็น number ไม่ต้องคร่อม
- ถ้าเป็น DateTime อาจต้องคร่อมด้วยเครื่องหมาย sharp ( # )
ถ้าดูไม่ออก ลองคัดลอกสายอักขระที่มัน Debug ออกมา เอามาโพสต์ให้ดูอีกรอบก็ได้ครับ
        
    6 @R07092    
        
  
      ไม่เข้าใจจริงๆ ครับ พอลองเปลี่ยนกลับไปใช้ชื่อตารางกับฟอร์มในแนวๆ
field1 field2
text1 text2
ก็ใช้ได้เหมือนเดิม
ได้ลองก็อบโค้ดที่ใช้ไม่ได้มาให้อาจารย์ดูครับ
    
    
  field1 field2
text1 text2
ก็ใช้ได้เหมือนเดิม
ได้ลองก็อบโค้ดที่ใช้ไม่ได้มาให้อาจารย์ดูครับ
Private Sub Command4_Click()
Dim sq As String
sq = "Insert into input(month, zone) values('" & cbmonth & "', '" & cbzone & "');"
Debug.Print sq
CurrentProject.Connection.Execute sq
End Sub
Insert into input(month, zone) values('a', 'a');
        
    7 @R07093    
        
  
      -ชื่อตาราง (ไม่แน่ใจนัก) ชื่อว่า input น่าจะเป็นคำสงวน
-ชื่อฟิลด์ month เป็นคำสงวนแน่ๆ ไปเปลี่ยนชื่อฟิลด์ด่วนๆ ครับ
การตั้งชื่อด้วยคำสงวน มักจะเจอปัญหาแบบนี้ครับ
หรือไม่ ถ้าไม่แน่ใจว่าคำใดเป็นคำสงวนให้ใส่เครื่องหมายสี่เหลี่ยมคร่อมไว้ครับ
ลองไปปรับสายอักขระ เพื่อให้มันต่อออกมาเป็น
Insert into [input]([month], zone) values('a', 'a');
ลองดูครับ
    
  -ชื่อฟิลด์ month เป็นคำสงวนแน่ๆ ไปเปลี่ยนชื่อฟิลด์ด่วนๆ ครับ
การตั้งชื่อด้วยคำสงวน มักจะเจอปัญหาแบบนี้ครับ
หรือไม่ ถ้าไม่แน่ใจว่าคำใดเป็นคำสงวนให้ใส่เครื่องหมายสี่เหลี่ยมคร่อมไว้ครับ
ลองไปปรับสายอักขระ เพื่อให้มันต่อออกมาเป็น
Insert into [input]([month], zone) values('a', 'a');
ลองดูครับ
        
    8 @R07365    
        
  
      ในกรณีนี้ถ้าต้องการให้มีรูปภาพเข้าไปด้วย จะสามารถทำได้มั๊ยครับ
หรือว่าต้องแยกออกเป็นอีก form ผมคิดไม่ออกจริงๆ ครับว่าจะสร้าง frame แล้ว add รูปเข้าไปยังไง
    
  หรือว่าต้องแยกออกเป็นอีก form ผมคิดไม่ออกจริงๆ ครับว่าจะสร้าง frame แล้ว add รูปเข้าไปยังไง
        
    9 @R07368    
        
    
      ค้นดูกระทู้เก่าๆ ครับ เรื่องการเพิ่มรูป มันหลายขั้นหลายตอน หรือหลายวิธี
ไม่สะดวกในการตอบซ้ำๆ หลายกระทู้ครับ เพราะมันพิมพ์ยาวมาก
ต้องค้นหาอ่านหลายๆ กระทู้ลองเรียบเรียงความเข้าใจเอาเองแล้วลองปฎิบัติตามดูครับ ดูว่าเข้าใจวิธีไหนก็ลองทำตามไป (บางกระทู้อาจมีลิงค์ให้โหลดตัวอย่างด้วย) ลองค้นหาดูครับ
    
  ไม่สะดวกในการตอบซ้ำๆ หลายกระทู้ครับ เพราะมันพิมพ์ยาวมาก
ต้องค้นหาอ่านหลายๆ กระทู้ลองเรียบเรียงความเข้าใจเอาเองแล้วลองปฎิบัติตามดูครับ ดูว่าเข้าใจวิธีไหนก็ลองทำตามไป (บางกระทู้อาจมีลิงค์ให้โหลดตัวอย่างด้วย) ลองค้นหาดูครับ
      Time: 0.5120s
    
      
		
1 ทำฟอร์มของคุณให้เป็นแบบ Unbound ทั้งหมด
2 เมื่อกดปุ่ม save ค่อยต่อสายอักขระให้เป็น sql statment แล้วสั่งรัน
เช่น
dim sq as string
sq = "Insert into table1(field1, field2, field3) values('" & text1 & "', '" & text2 & "', '" & text3 & "');"
currentproject.connection.execute sq
** ถ้าคุณทำวิธีนี้ จะได้ตามที่คุณต้องการ คือไม่มีการบันทึกอัตโนมัติ ระบบจะทำการบันทึกข้อมูลเมือ่กดปุ่ม บันทึกเท่านั้น
** ฟอร์มของคุณจะมีไว้เพื่อรับข้อมูลเท่านั้น ไม่สามารถใช้เพื่อย้อนดูเรคคอร์ดเก่าๆ ได้