กระทู้เก่าบอร์ด อ.Yeadram
        
           1,534   7		  
          
					  
		    URL.หัวข้อ / 
		    URL
        
        update ระหว่าง 2 table      
    ผมใช้
CurrentProject.Connection.Execute "update tb_A inner join tb_B on tb_A.Item_Code = tb_B.Item_Code set tb_A.Cost = tb_B._Cost"
ในการอัพเดท ราคาระหว่าง 2 เทเบิล โดยใช้ inner join เข้ามาช่วย จากที่ลองทำพบปัญหาคือเวลารันแล้วถ้าเกิด tb_B ข้อมูลเยอะ จะช้ามาก มีวิธีแก้ไขหรือป่าวคับ
อย่างเช่นผมแก้ไข cost ที่ item_code ชื่อ ad โดยใช้ where ได้ไหมคับ
แล้วให้มันอัพเดทเฉพาะ item_code ที่ชื่อ ad คับ จะลดเวลาช่วงที่รันลงได้หรือป่าวคับ หรือว่ามันจะอัพเดททุกโค๊ดเลยคับ
หรือว่ามีคำสั่งอื่นอีกไหมคับที่ใช้อัพเดท ระหว่าง 2 ตารางคับ รบกวนขอคำแนะนำหน่อยคับ
				7 Reply in this Topic. Dispaly 1  pages and you are on page number 1 
				
        
    1 @R03345    
        
  
      ใช้ where ได้ครับ ระบุ ทีละ รหัสก็ได้ครับ    
    
  
        
    2 @R03354    
        
  
      ขอขอบพระคุณอาจารย์มากเลยคับ จะลองทำดูคับ
    
    
  
        
    3 @R03357    
        
  
      เรียน คุณกลอยใจ
กรณีที่ต้องการ update ข้อมูลผ่านฟอร์ม ลองเพิ่มเติมเงื่อนไขลงไปนะครับ
    
  กรณีที่ต้องการ update ข้อมูลผ่านฟอร์ม ลองเพิ่มเติมเงื่อนไขลงไปนะครับ
WHERE (((tb_A.Item_Code)=[Forms]![ชื่อฟอร์ม]![Item_Code]));    
        
    4 @R03367    
        
  
      คุณ อนุชิตคับ ผมลอง ใส่ where ตามที่บอกแล้วคับ มันขึ้น erorr คัับ ไม่รู้ว่าผิดตรงไหนหรือป่าวคับ ผมใส่ตามโค๊ดข้างล่างนี้เลยนะคับ
CurrentProject.Connection.Execute "update tb_routing inner join tb_database on tb_routing.C_Item_Code = tb_database.C_Item_Code set tb_database.Process_Cost = tb_routing.Process_Cost,tb_database.Paint_Cost = tb_routing.Paint_Cost,tb_database.Prcssttcst = (tb_routing.Process_Cost+tb_routing.Paint_Cost*tb_database.QPA),tb_database.GPrcssttcst = (tb_routing.Process_Cost+tb_routing.Paint_Cost*tb_database.QPA) WHERE ((tb_database.C_Item_Code)=[Forms]![frm_routing]![Itemcd])"
    
  CurrentProject.Connection.Execute "update tb_routing inner join tb_database on tb_routing.C_Item_Code = tb_database.C_Item_Code set tb_database.Process_Cost = tb_routing.Process_Cost,tb_database.Paint_Cost = tb_routing.Paint_Cost,tb_database.Prcssttcst = (tb_routing.Process_Cost+tb_routing.Paint_Cost*tb_database.QPA),tb_database.GPrcssttcst = (tb_routing.Process_Cost+tb_routing.Paint_Cost*tb_database.QPA) WHERE ((tb_database.C_Item_Code)=[Forms]![frm_routing]![Itemcd])"
        
    5 @R03428    
        
  
      ไม่มีท่านใด ตอบกลับเลยเหรอคับ รอ....คำชี้แนะ    
    
  
        
    6 @R03432    
        
  
      จุดอื่นผิดบ้างหรือไม่ ไม่ทราบนะครับ แต่ที่แน่ๆคือ คุณต้อง evaluate ค่าของ textbox ออกมาใส่ใน SLQ Command  เพราะตัว Data Access Method อะไรก็แล้วแต่ จะไม่รู้จัก Access Object ซึ่งในที่นี้ก็คือ [Forms]![frm_routing]![Itemcd]
ดังนั้นจึงต้องเป็น ... WHERE tb_database.C_Item_Code = '" & [Forms]![frm_routing]![Itemcd] & "' " เช็คดีๆเพราะเป็นเครื่องหมาย single quote ติดกับ double quote ครับ อาจดูยากนิดนึง
    
  ดังนั้นจึงต้องเป็น ... WHERE tb_database.C_Item_Code = '" & [Forms]![frm_routing]![Itemcd] & "' " เช็คดีๆเพราะเป็นเครื่องหมาย single quote ติดกับ double quote ครับ อาจดูยากนิดนึง
        
    7 @R03437    
        
    
      ขอบคุณอาจารย์ สันติสุข มากเลยนะคับ สำหรับคำแนะนำ 
ผมจะลองทำตามดูคับ
    
  ผมจะลองทำตามดูคับ
      Time: 0.1271s
    
      
		