กระทู้เก่าบอร์ด อ.Yeadram
        
           3,055   12		  
          
					  
		    URL.หัวข้อ / 
		    URL
        
        การ update ข้อมูล      
    
      Dim sContractNo
Dim sID As Integer
sID = Me.qtytotal
sContractNo = Me.product_id
DoCmd.SetWarnings False
SQL = "update inv_products set qty = sID where (inv_products.name='" & sContractNo & "')"
DoCmd.RunSQL SQL
คือว่ามันให้ ใส่ sID อะคะ ไม่รู้ว่าเพราะอะไร ?
qtytotal คือ textbox ที่คำนวณจำนวนสินค้าที่กรอกใหม่กับจำนวนเดิมคะ
ถ้าเกิดเขียน โค๊ดผิด ช่วยชี้แนะด้วยนะคะ
    
  Dim sID As Integer
sID = Me.qtytotal
sContractNo = Me.product_id
DoCmd.SetWarnings False
SQL = "update inv_products set qty = sID where (inv_products.name='" & sContractNo & "')"
DoCmd.RunSQL SQL
คือว่ามันให้ ใส่ sID อะคะ ไม่รู้ว่าเพราะอะไร ?
qtytotal คือ textbox ที่คำนวณจำนวนสินค้าที่กรอกใหม่กับจำนวนเดิมคะ
ถ้าเกิดเขียน โค๊ดผิด ช่วยชี้แนะด้วยนะคะ
				12 Reply in this Topic. Dispaly 1  pages and you are on page number 1 
				
        
    1 @R02858    
        
  
      SQL = "update inv_products set qty = " & sID & " where (inv_products.name='" & sContractNo & "')"    
    
  
        
    2 @R02908    
        
  
      น่าจะเขียน SQL ผิด  ตรง update inv_products set qty = sID
เพราะถ้าอ้างว่า = ตัวแปร sID
แต่เขียน ในเครื่องหมาย " "
มันก็ตีความว่า เป็น Sting ชุดเดียวกัน
ไม่ใช่ตัวแปรที่อ้างไว้เมื่อตอนต้น
แต่ผมก็ไม่แม่น เรื่องการเขียน
ขอไม่แนะนำครับ
    
  เพราะถ้าอ้างว่า = ตัวแปร sID
แต่เขียน ในเครื่องหมาย " "
มันก็ตีความว่า เป็น Sting ชุดเดียวกัน
ไม่ใช่ตัวแปรที่อ้างไว้เมื่อตอนต้น
แต่ผมก็ไม่แม่น เรื่องการเขียน
ขอไม่แนะนำครับ
        
    3 @R03529    
        
  
      กลับมาอีกแล้วค่ะ คือว่ามันเกิดปัญหาตรงที่
ตอนแรกก็อัพเดตได้ปกติ แต่อยู่มาวันนึงกลับ error ไม่แน่ใจว่าเพราะอะไร
Private Sub cmdpost_Click()
DoCmd.Save
Dim sContractNo
Dim sID
                                     
sID = Forms![CC-BuyProduct]![CC-Orderdetail].Form![txtproamount]
sContractNo = Forms![CC-BuyProduct]![CC-Orderdetail].Form![proid]
      
DoCmd.SetWarnings False
SQL = "update inv_products set qty = & sID & where (inv_products.name='" & sContractNo & "')"
DoCmd.RunSQL SQL
            
         
End Sub
มันจะฟ้อง ตรง DoCmd.RunSQL SQL
มันเป็นเพราะอะไรหรอคะ ?????????
    
  ตอนแรกก็อัพเดตได้ปกติ แต่อยู่มาวันนึงกลับ error ไม่แน่ใจว่าเพราะอะไร
Private Sub cmdpost_Click()
DoCmd.Save
Dim sContractNo
Dim sID
sID = Forms![CC-BuyProduct]![CC-Orderdetail].Form![txtproamount]
sContractNo = Forms![CC-BuyProduct]![CC-Orderdetail].Form![proid]
DoCmd.SetWarnings False
SQL = "update inv_products set qty = & sID & where (inv_products.name='" & sContractNo & "')"
DoCmd.RunSQL SQL
End Sub
มันจะฟ้อง ตรง DoCmd.RunSQL SQL
มันเป็นเพราะอะไรหรอคะ ?????????
        
    4 @R03530    
        
  
      ขออนุญาตินะคับ ทำไมไม่เหนมีการประกาศตัวแปรชื่อ SQL ล่ะคับ หรือว่าเผลอลบไปหรือป่าว ถ้าไม่ได้ประกาศตัวแปร มันจะรันได้ไงคับ โปรแกรมมันไม่รู้จักตัวแปรชื่อ SQL ผมคิดว่างั้นนะคับ    
    
  
        
    5 @R03534    
        
  
      ประกาศแล้วมันก็ error อยู่ดีค่ะ
ขึ้่นว่า Run-time error '3144'
Syntax error in UpDATE statement.
    
  ขึ้่นว่า Run-time error '3144'
Syntax error in UpDATE statement.
        
    6 @R03535    
        
  
      ไม่แน่ใจว่าลืมใส่เครื่องหมายนี้หรือป่าวคับ
SQL = "update inv_products set qty = '" & sID & "' where (inv_products.name='" & sContractNo & "')"
ลองดูนะคับ
    
  SQL = "update inv_products set qty = '" & sID & "' where (inv_products.name='" & sContractNo & "')"
ลองดูนะคับ
        
    7 @R03543    
        
  
      อ. yeadram แนะนำได้ถูกต้องแล้วนะครับ  แต่คุณเขียนตรงที่ อ.เขาเน้นสีแดงด้วยซ้ำ ต่างออกไป    
    
  
        
    8 @R03554    
        
  
      พอใส่ " & sID & "  โปรแกรมมันก็ฟ้องที่  DoCmd.RunSQL SQL ค่ะ
    
    
  
        
    9 @R03555    
        
  
      ดูดีๆสิคับ  '" & sID & "'  ใส่ถูกหรือป่าว    
    
  
        
    10 @R03560    
        
  
              ' DoCmd.SetWarnings False 
SQL = "update inv_products set qty = " & sID & " where (inv_products.name='" & sContractNo & "')"
debug.print sql
DoCmd.RunSQL SQL
ตามที่แจ้งมา qty เป็น number ไม่ต้องคร่อมด้วย single quote ครับ
ใช้แค่นั้นแหละ
- ลองเบรคคำสั่ง setwarnings
- เพิ่มคำสั่ง debug
- สั่งให้มันทำงานอีกครับ
- **** ถ้า มันเกิด error warnings อะไรก็ตาม จับภาพหน้าจอ มาโพสต์ครับ
- เมื่อเคลียร์ error ออกไปแล้วให้หยุดทำงาน แล้วกด ctl+G เพื่อเปิดหน้าต่าง debug ขึ้นมา จะเห็นมี statement อยู่ตรงนั้น ให้คุณลองดู ว่ามันเขียนถูกต้องหรือเปล่า ***** ถ้าดูไม่ออก หรือไม่แน่ใจ ให้ คัดลอกทั้งหมดนั่น มาโพสต์ครับ
-
    
    
  SQL = "update inv_products set qty = " & sID & " where (inv_products.name='" & sContractNo & "')"
debug.print sql
DoCmd.RunSQL SQL
ตามที่แจ้งมา qty เป็น number ไม่ต้องคร่อมด้วย single quote ครับ
ใช้แค่นั้นแหละ
- ลองเบรคคำสั่ง setwarnings
- เพิ่มคำสั่ง debug
- สั่งให้มันทำงานอีกครับ
- **** ถ้า มันเกิด error warnings อะไรก็ตาม จับภาพหน้าจอ มาโพสต์ครับ
- เมื่อเคลียร์ error ออกไปแล้วให้หยุดทำงาน แล้วกด ctl+G เพื่อเปิดหน้าต่าง debug ขึ้นมา จะเห็นมี statement อยู่ตรงนั้น ให้คุณลองดู ว่ามันเขียนถูกต้องหรือเปล่า ***** ถ้าดูไม่ออก หรือไม่แน่ใจ ให้ คัดลอกทั้งหมดนั่น มาโพสต์ครับ
-
        
    11 @R03579    
        
  
      พอลองเข้าไปดูที่ฐานข้อมูล ก็เห็นว่าเป็น int(5) พอแก้เป็น int(11) ก็ใช้ได้ทั้งหมดแล้วค่ะ
เลยไม่แน่ใจว่าทำไมบางหน้าถึงอัพเดตได้ แต่บางหน้าใช้งานไม่ได้
แต่มีปัญหาใหม่ค่ะ
คือที่ดิฉันทำเนี่ย เป็นการใช้ datasheet จึงสามารถใส่ได้หลายรายการ แล้วทีนี้พอใส่หลายๆรายการ มันก็อัพเดตให้แค่รายการเดียวค่ะ เลยอยากทราบว่าจะทำอย่างไรให้อัพเดตได้ทุกตัวที่เราใส่ไปคะ
    
    
  เลยไม่แน่ใจว่าทำไมบางหน้าถึงอัพเดตได้ แต่บางหน้าใช้งานไม่ได้
แต่มีปัญหาใหม่ค่ะ
คือที่ดิฉันทำเนี่ย เป็นการใช้ datasheet จึงสามารถใส่ได้หลายรายการ แล้วทีนี้พอใส่หลายๆรายการ มันก็อัพเดตให้แค่รายการเดียวค่ะ เลยอยากทราบว่าจะทำอย่างไรให้อัพเดตได้ทุกตัวที่เราใส่ไปคะ
        
    12 @R03582    
        
    
      ทำได้แล้วค่ะ ไม่รบกวนแล้วนะค่ะ    
    
  
      Time: 0.2098s
    
      
		