กระทู้เก่าบอร์ด อ.Yeadram
3,531 27
URL.หัวข้อ /
URL
เปลี่ยนข้อมูลตามเงื่อนไข
สวัสดีค่ะ วันนี้มีคำถามมาให้ชาว ไท Access ช่วยคิดหน่อยค่ะ
พอดีเรามี table 2 table
table แรกค่ะ เรา import ข้อมูลมาจาก text file ค่ะ ส่วนนี้ไม่ได้มีปัญหาอะไรค่ะ
table 2 ค่ะ คือ เราต้องการแปลงค่าจาก table แรก ตามเงื่อนไขค่ะ เช่น ถ้า table แรก มีฟิวด์ชื่อว่า
PlantCode ถ้าข้อมูลที่โหลดเข้ามาของฟิวด์นี้ มีค่าเท่ากับ 2
ที่ table ที่ 2 ส่วนของฟิวด์ที่ชื่อว่า Customer Code ต้องเท่ากับ A13 แบบนี้ค่ะ
เราจะมีวิธีการทำอย่างไรค่ะ ให้ค่าของ table ที่2 เปลี่ยนตามเงื่อนไขที่กำหนด
พอดีเรามี table 2 table
table แรกค่ะ เรา import ข้อมูลมาจาก text file ค่ะ ส่วนนี้ไม่ได้มีปัญหาอะไรค่ะ
table 2 ค่ะ คือ เราต้องการแปลงค่าจาก table แรก ตามเงื่อนไขค่ะ เช่น ถ้า table แรก มีฟิวด์ชื่อว่า
PlantCode ถ้าข้อมูลที่โหลดเข้ามาของฟิวด์นี้ มีค่าเท่ากับ 2
ที่ table ที่ 2 ส่วนของฟิวด์ที่ชื่อว่า Customer Code ต้องเท่ากับ A13 แบบนี้ค่ะ
เราจะมีวิธีการทำอย่างไรค่ะ ให้ค่าของ table ที่2 เปลี่ยนตามเงื่อนไขที่กำหนด
27 Reply in this Topic. Dispaly 2 pages and you are on page number 1
2 @R18853
ผมเข้าใจถูกหรือเปล่าอะ (อ่านแล้วงงจนวิงเวียน)
1. ตาราง 1 ได้จากการ Import จาก Text File
2. ตารางที่ 2 มาจากไหน
2.1 เป็นข้อมูลเดิม?
2.2 เป็นข้อมูลที่เอามาจากตาราง 1 ?
แต่เป้าหมายคือต้องการเปลี่ยนค่าในตารางที่ 2 ใช่มั๊ย?
ถ้าใช่ ก็ใช้ Updated Query ครับ จะเปลี่ยนจากอะไรเป็นอะไร ที่ฟิลด์ไหนได้ทั้งหมด แต่ต้องให้ Data Type ถูกต้องด้วยเท่านั้นเอง
ที่ผมงงอีกอย่างคือ PlantCode ของตาราง 1 มีค่าเท่ากับ 2 แล้วทำไม Customer Code ที่ตารางที่ 2 ต้องเป็น A13 (ก็เลยคิดเอาเองว่าเป็นการนำเอาตาราง 1 มาทำเป็นตาราง 2 ใช่มั๊ย?)
ปล. ถ้าจะกดปุ่ม Ctrl+H ก็ได้นะ
1. ตาราง 1 ได้จากการ Import จาก Text File
2. ตารางที่ 2 มาจากไหน
2.1 เป็นข้อมูลเดิม?
2.2 เป็นข้อมูลที่เอามาจากตาราง 1 ?
แต่เป้าหมายคือต้องการเปลี่ยนค่าในตารางที่ 2 ใช่มั๊ย?
ถ้าใช่ ก็ใช้ Updated Query ครับ จะเปลี่ยนจากอะไรเป็นอะไร ที่ฟิลด์ไหนได้ทั้งหมด แต่ต้องให้ Data Type ถูกต้องด้วยเท่านั้นเอง
ที่ผมงงอีกอย่างคือ PlantCode ของตาราง 1 มีค่าเท่ากับ 2 แล้วทำไม Customer Code ที่ตารางที่ 2 ต้องเป็น A13 (ก็เลยคิดเอาเองว่าเป็นการนำเอาตาราง 1 มาทำเป็นตาราง 2 ใช่มั๊ย?)
ปล. ถ้าจะกดปุ่ม Ctrl+H ก็ได้นะ
3 @R18854
ขอบคุณค่ะ คุณ ธัชชัย
ตารางที่ 1 ได้จากการ import จาก TXT ถูกต้องค่ะ โดย import เข้า Access นะค่ะ
ตารางที่ 2 เป็นข้อมูลที่เอามาจากตาราง 1 ค่ะ
เป้าหมาย ใช่ค่ะ ต้องการเปลี่ยนค่าในตาราง 2ค่ะ โดยมีเงื่อนไข อย่างที่ยกตัวอย่างค่ะ ถ้าตาราง 1 มีค่า plantCode = 2 ที่ตาราง 2 ที่ customer Code ต้องเป็น A13 ค่ะ ถ้าจะเปรียบเทียบแล้ว plantcode จากตาราง 2 จะหายไป เป็น customer Code แทนค่ะ
ปล. ทั้ง 2 ตาราง อยู่ในโปรแกรม access ค่ะ แต่ที่แนบไฟล์รูป excel ไป เพียงต้องการ ให้เห็นภาพถึงการเปลี่ยนแปลงค่ะ ที่ต้องทำแบบนี้ เพื่อต้องการรับ txt file เข้า access แล้วเปลี่ยนแปลงค่าบางตัวตามเงื่อนไขค่ะ เมื่อได้ค่าที่เปลี่ยนแล้ว ต้องการ Export จากตารางที่ 2 ไปเป็น excel file ค่ะ
ตารางที่ 1 ได้จากการ import จาก TXT ถูกต้องค่ะ โดย import เข้า Access นะค่ะ
ตารางที่ 2 เป็นข้อมูลที่เอามาจากตาราง 1 ค่ะ
เป้าหมาย ใช่ค่ะ ต้องการเปลี่ยนค่าในตาราง 2ค่ะ โดยมีเงื่อนไข อย่างที่ยกตัวอย่างค่ะ ถ้าตาราง 1 มีค่า plantCode = 2 ที่ตาราง 2 ที่ customer Code ต้องเป็น A13 ค่ะ ถ้าจะเปรียบเทียบแล้ว plantcode จากตาราง 2 จะหายไป เป็น customer Code แทนค่ะ
ปล. ทั้ง 2 ตาราง อยู่ในโปรแกรม access ค่ะ แต่ที่แนบไฟล์รูป excel ไป เพียงต้องการ ให้เห็นภาพถึงการเปลี่ยนแปลงค่ะ ที่ต้องทำแบบนี้ เพื่อต้องการรับ txt file เข้า access แล้วเปลี่ยนแปลงค่าบางตัวตามเงื่อนไขค่ะ เมื่อได้ค่าที่เปลี่ยนแล้ว ต้องการ Export จากตารางที่ 2 ไปเป็น excel file ค่ะ
4 @R18855
ก่อนอื่นนะครับ
1. Copy ตาราง 1 มาเป็นตาราง 2
2. แก้ไขชื่อฟิลด์และ Data Type ในตารางที่ 2 ให้เป็นแบบที่คุณต้องการ
3. ตอนนี้คุณจะได้ตารางที่ 2 ที่มีข้อมูลทุกอย่างเหมือนตารางที่ 1 (แล้วไม่ต้องไปสนใจตาราง 1 อีกเลย มันจะทำให้งง)
4. นำตารางที่ 2 มาสร้าง Select Query
5. เปลี่ยน Select Query เป็น Update Query
6. กำหนดที่ฟิลด์ที่คุณต้องการเปลี่ยน เช่น Customer Code โดยกำหนด Criteria เป็น 2 ส่วน Update To ให้ใส่ A13
สั่ง Run Query เพียงเท่านี้ข้อมูลก็เปลี่ยนแล้วครับ
1. Copy ตาราง 1 มาเป็นตาราง 2
2. แก้ไขชื่อฟิลด์และ Data Type ในตารางที่ 2 ให้เป็นแบบที่คุณต้องการ
3. ตอนนี้คุณจะได้ตารางที่ 2 ที่มีข้อมูลทุกอย่างเหมือนตารางที่ 1 (แล้วไม่ต้องไปสนใจตาราง 1 อีกเลย มันจะทำให้งง)
4. นำตารางที่ 2 มาสร้าง Select Query
5. เปลี่ยน Select Query เป็น Update Query
6. กำหนดที่ฟิลด์ที่คุณต้องการเปลี่ยน เช่น Customer Code โดยกำหนด Criteria เป็น 2 ส่วน Update To ให้ใส่ A13
สั่ง Run Query เพียงเท่านี้ข้อมูลก็เปลี่ยนแล้วครับ
5 @R18859
ขอบคุณค่ะ สำหรับคำแนะนำ เดี๋ยวจะลองดูนะค่ะ ถ้าติดปัญหา
คงต้องรบกวนต่อ พอดีเพิ่งเคยจับ access ค่ะ บางอย่างยังคง
ไม่เข้าใจ ก็มีอยู่เยอะค่ะ
คงต้องรบกวนต่อ พอดีเพิ่งเคยจับ access ค่ะ บางอย่างยังคง
ไม่เข้าใจ ก็มีอยู่เยอะค่ะ
6 @R18867
ขอรบกวนอีกครั้งนะค่ะ
ที่ทางคุณธัชชัยแนะนำ criteria = 2 Update to เป็น A13 อันนี้มีเงื่อนไขเดียว ใส่ที่ update Query ได้แล้วค่ะ แต่ถ้ามีเงื่อนมากกว่า 1 ล่ะค่ะ เราจะมีการกำหนดยังไงค่ะ สมมุติมีเพิ่มเข้ามาอีกว่า ถ้า criteria = 3 Update to เป็น A14 ด้วย ซึ่งแล้วแต่ data ที่นำเข้าตารางในขณะนั้น
รบกวนอีกข้อค่ะ ถ้าเราต้องการเพิ่มตัวอักษรไปข้างหน้าข้อมูล เช่นจาก 1234 ให้ข้อมูลเปลี่ยนเป็น A1234 คือมี A เพิ่มเข้ามา 1 ตัว ที่ query มีการกำหนดอย่างไรค่ะ
ขอบคุณค่ะ รบกวนทุกคนด้วยนะค่ะ พอดีมือใหม่จริงๆค่ะ ไม่มีประสบการณ์ด้านนี้เลยค่ะ
ที่ทางคุณธัชชัยแนะนำ criteria = 2 Update to เป็น A13 อันนี้มีเงื่อนไขเดียว ใส่ที่ update Query ได้แล้วค่ะ แต่ถ้ามีเงื่อนมากกว่า 1 ล่ะค่ะ เราจะมีการกำหนดยังไงค่ะ สมมุติมีเพิ่มเข้ามาอีกว่า ถ้า criteria = 3 Update to เป็น A14 ด้วย ซึ่งแล้วแต่ data ที่นำเข้าตารางในขณะนั้น
รบกวนอีกข้อค่ะ ถ้าเราต้องการเพิ่มตัวอักษรไปข้างหน้าข้อมูล เช่นจาก 1234 ให้ข้อมูลเปลี่ยนเป็น A1234 คือมี A เพิ่มเข้ามา 1 ตัว ที่ query มีการกำหนดอย่างไรค่ะ
ขอบคุณค่ะ รบกวนทุกคนด้วยนะค่ะ พอดีมือใหม่จริงๆค่ะ ไม่มีประสบการณ์ด้านนี้เลยค่ะ
7 @R18869
สำหรับข้อที่เพิ่มตัวอักษร a ข้างหน้าได้แล้วค่ะ ที่update to
ใส่เป็น "a"+[tablename]![fieldname]
ข้อคำตอบที่ต้องกำหนด ในกรณีที่เงื่อนไขหลายข้อพอค่ะ เราจะกำหนด
ยังไงค่ะ ขอบคุณค่ะ
ใส่เป็น "a"+[tablename]![fieldname]
ข้อคำตอบที่ต้องกำหนด ในกรณีที่เงื่อนไขหลายข้อพอค่ะ เราจะกำหนด
ยังไงค่ะ ขอบคุณค่ะ
8 @R18871
จาก R11867
ให้ทำทีละครั้งครับ
ถ้ามีหลายเงื่อนไข แนะนำว่าเปิดตารางแล้วใช้คำสั่ง Ctrl+H เถอะครับ
ยกเว้นเปลี่ยนข้อมูลทุกวัน อันนี้ผมคิดออกเป็น VBA ครับ
Select Case
ให้ทำทีละครั้งครับ
ถ้ามีหลายเงื่อนไข แนะนำว่าเปิดตารางแล้วใช้คำสั่ง Ctrl+H เถอะครับ
ยกเว้นเปลี่ยนข้อมูลทุกวัน อันนี้ผมคิดออกเป็น VBA ครับ
Select Case
9 @R18874
ค่ะ ขอบคุณมากๆค่ะ คุณธัชชัย
คิดว่าคงจะทำแบบ VBA ค่ะ เพราะเปลี่ยนข้อมูลทุกวันค่ะ
คิดว่าคงจะทำแบบ VBA ค่ะ เพราะเปลี่ยนข้อมูลทุกวันค่ะ
10 @R18877
ใช้คำสั่ง Select Case ครับ ทำเป็นใช่มั๊ย
11 @R18880
IIf([Export]![Cust_Code]="2","A13",IIf([Export]![Cust_Code]="6","A12","A14"))
ใช้ code ได้ค่ะ ใส่ไว้ที่ update To ค่ะ
ที่นี้มีคำถามใหม่มาค่ะ ถ้าตอน import ที่เวลาจะแสดงในตารางเป็น 9:30 แต่ที่นี้ ต้องการเปลี่ยน data ตอน Export จาก 9:30 เป็น 930 คือ เราไม่ต้องการเครื่องหมาย : ค่ะ มีวิธีการอย่างไรค่ะ พอช่วยแนะนำได้ไหมค่ะ
ใช้ code ได้ค่ะ ใส่ไว้ที่ update To ค่ะ
ที่นี้มีคำถามใหม่มาค่ะ ถ้าตอน import ที่เวลาจะแสดงในตารางเป็น 9:30 แต่ที่นี้ ต้องการเปลี่ยน data ตอน Export จาก 9:30 เป็น 930 คือ เราไม่ต้องการเครื่องหมาย : ค่ะ มีวิธีการอย่างไรค่ะ พอช่วยแนะนำได้ไหมค่ะ
12 @R18881
ถ้าเองตอบเอง แถมทำง่ายกว่าที่ผมคิดอีกแบบนี้ไม่ใช่มือใหม่แล้วครับ
คำตอบสำหรับ R18880 คือ
ใช้คำสั่ง Left Right Mid Len ครับ
คำตอบสำหรับ R18880 คือ
ใช้คำสั่ง Left Right Mid Len ครับ
13 @R18882
จาก R18881 ผมชอบและชื่นชมนะครับ
เพราะได้แบ่งปันความรู้กัน บ่อยครั้งผมก็คิดเลยผ่านเรื่องง่ายๆ ไป เอะอะก็ VBA ยัน น่าเขกกะโหลกตัวเองจริงๆ
เพราะได้แบ่งปันความรู้กัน บ่อยครั้งผมก็คิดเลยผ่านเรื่องง่ายๆ ไป เอะอะก็ VBA ยัน น่าเขกกะโหลกตัวเองจริงๆ
14 @R18891
มือใหม่จริงๆค่ะ คุณธัชชัย
แล้วที่โค้ดนั้นมาเพราะมีคนบอกมา เลยเอาลองดู ปรากฏว่ามันได้ เลยเอาแชร์กับคนอื่นๆบางค่ะ
ส่วน Left Right Mid Len ยังไม่ค่อยเข้าใจค่ะ มันต้องกำหนดยังไงค่ะ อ่านจากเน็ตก็ยังคงไม่เข้าใจเท่าไรค่ะ
รบกวนอธิบายให้ฟังหน่อยได้ไหมค่ะ แล้วถ้าสมมุติว่าเราต้องการกำหนดโค้ดนี้บน Query ชนิด Update จะได้ไหมค่ะ
แล้วที่โค้ดนั้นมาเพราะมีคนบอกมา เลยเอาลองดู ปรากฏว่ามันได้ เลยเอาแชร์กับคนอื่นๆบางค่ะ
ส่วน Left Right Mid Len ยังไม่ค่อยเข้าใจค่ะ มันต้องกำหนดยังไงค่ะ อ่านจากเน็ตก็ยังคงไม่เข้าใจเท่าไรค่ะ
รบกวนอธิบายให้ฟังหน่อยได้ไหมค่ะ แล้วถ้าสมมุติว่าเราต้องการกำหนดโค้ดนี้บน Query ชนิด Update จะได้ไหมค่ะ
15 @R18892
ดูจากรูปนะครับ
ผมใช้คำสั่ง
=Left([Data2],InStr(1,[Data2],":")-1) & Right([Data2],Len([data2])-InStr(1,[Data2],":"))
ผมใช้คำสั่ง
=Left([Data2],InStr(1,[Data2],":")-1) & Right([Data2],Len([data2])-InStr(1,[Data2],":"))
16 @R18893
Left คือหยิบตัวอักษรทางด้านซ้ายตามจำนวนตำแหน่งที่กำหนด
Right คือหยิบทางด้านขวา
InStr หาว่าตัวอักษรที่ต้องการอยู่ในตำแหน่งไหน
Len นับจำนวนตัวอักษรทั้งหมด
ลองค่อยๆ แงะสูตรดูนะครับ
Right คือหยิบทางด้านขวา
InStr หาว่าตัวอักษรที่ต้องการอยู่ในตำแหน่งไหน
Len นับจำนวนตัวอักษรทั้งหมด
ลองค่อยๆ แงะสูตรดูนะครับ
17 @R18895
ลองใช้ฟังก์ชั่น Replace() ในคิวรี่ดูครับ เช่น
Expr1: Replace([Date2],":","")
Expr1: Replace([Date2],":","")
18 @R18898
ขอบคุณค่ะ ถ้าทำแบบที่คุณธัชชัยบอก ทำได้แล้วค่ะ
แต่พอดีว่าเราได้การทำการเปลี่ยนข้อมูลบน Query บ้างตัว ที่ชนิด Query แบบ Update ค่ะ
เลยอยากสร้างโค้ดไว้ที่ส่วนนี้ค่ะ เพราะนอกจากจะตอ้งเปลี่ยนค่าเวลาแล้ว ก็มีค่าอื่นๆที่ต้องเปลี่ยน ซึ่งค่าอื่นที่เปลี่ยน ฃทำบน Query แบบ Update หมดเลยค่ะ เลยนี้เลยพยายามจะนำโค้ดในการเปลี่ยนเวลาไปไว้ที่เดียวกัน แต่พอไว้ที่เดียวแล้วกดรัน Query เวลาหายหมดเลยค่ะ เลยอยากทราบว่า จริงๆเราสามารถทำได้ไหมค่ะ
โดยเราได้ใส่โค้ดนี้ Left([DeliIsTime],InStr(1,[DeliIsDate],":")-1) & Right([DeliIsTime],Len([DeliIsTime])-InStr(1,[DeliIsTime],":")) ที่ Update To ค่ะ
ไม่เกิด error ใดๆค่ะ แต่เวลาหายหมดค่ะ
แต่พอดีว่าเราได้การทำการเปลี่ยนข้อมูลบน Query บ้างตัว ที่ชนิด Query แบบ Update ค่ะ
เลยอยากสร้างโค้ดไว้ที่ส่วนนี้ค่ะ เพราะนอกจากจะตอ้งเปลี่ยนค่าเวลาแล้ว ก็มีค่าอื่นๆที่ต้องเปลี่ยน ซึ่งค่าอื่นที่เปลี่ยน ฃทำบน Query แบบ Update หมดเลยค่ะ เลยนี้เลยพยายามจะนำโค้ดในการเปลี่ยนเวลาไปไว้ที่เดียวกัน แต่พอไว้ที่เดียวแล้วกดรัน Query เวลาหายหมดเลยค่ะ เลยอยากทราบว่า จริงๆเราสามารถทำได้ไหมค่ะ
โดยเราได้ใส่โค้ดนี้ Left([DeliIsTime],InStr(1,[DeliIsDate],":")-1) & Right([DeliIsTime],Len([DeliIsTime])-InStr(1,[DeliIsTime],":")) ที่ Update To ค่ะ
ไม่เกิด error ใดๆค่ะ แต่เวลาหายหมดค่ะ
19 @R18899
ขอบคุณทุกๆท่านค่ะ ใช้ฟังค์ replace อย่างที่คุณ TTT บอกได้ค่ะ ขอบคุณทุกๆท่านอีกครั้งนะค่ะ
แต่สำหรับ R18898 ก็ยังคงอยากรู้คำตอบอยู่ดีนะค่ะ ^ ^
แต่สำหรับ R18898 ก็ยังคงอยากรู้คำตอบอยู่ดีนะค่ะ ^ ^
20 @R18901
1. ลืมนึกถึงคำสั่ง Replace ไปเลย สงสัยตัวเองทำไมชอบทำเรื่องง่ายให้เป็นเรื่องยาก
2. ผมทดลองใช้คำสั่งนี้ไปใช้ใน Update Query แล้วนะ ก็ทำงานปกตินี่
2. ผมทดลองใช้คำสั่งนี้ไปใช้ใน Update Query แล้วนะ ก็ทำงานปกตินี่
Time: 0.2941s
อันนี้ไฟล์แนบค่ะ ลองส่งเป็นรูปภาพมาให้ดูค่ะ ประกอบคำอธิบายค่ะ
ขอบคุณทุกท่านล่วงหน้านะค่ะ สำหรับการช่วยเหลือ