แสดงกระทู้

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Kxess

หน้า: [1] 2
1
ลองไปดูในไฟล์ front-end ที่แยกมาครับว่า ลิ้งไปที่ไหน

โดยคลิกที่ External data > Linked table manager



จากนั้นจะแสดงหน้าต่างด้านล่าง



ให้ดูว่าที่อยู่ของไฟล์  back-end ตารางฐานข้อมูลอยู่ที่ไหน ก็ให้เอาไฟล์ไปวางไว้ตรงนั้น ในเครื่องใหม่
เช่น D:\database\back-end.accdb ที่เครื่องใหม่ ก็ต้องเอามาไว้ตรงนี้เหมือนกัน

--------
หรืออีกวิธีก็คือ สร้างลิ้งใหม่เลย โดยการลบตารางเก่าออก (*ต้องเป็นตารางที่ link table มานะ โดยมันจะมีลูกศรชี้ไปทางขวาเล็ก ๆ ที่รูปตารางแบบนี้ ) ถ้าลบตารางปกติ ข้อมูลหาย !!!


เมื่อลบแล้วให้ไปที่ External Data > New Data Source > From File > Access (กณีที่เราใช้จากไฟล์ access)



เลือกที่อยู่ของไฟล์ฐานข้อมูล back-end แล้วเลือกตัวเลือกด้านล่าง (Link to the database ...)



จะแสดงหน้าต่างให้เลือกตารางที่ต้องการ คลิกเลือก หรือเลือกทั้งหมดก็แล้วแต่ จากนั้นกด ok เป็นอันเรียบร้อย
โพสต์นี้ได้รับคำขอบคุณจาก: pirin, I love movies

2
บันทึก เปิดใหม่ ใช้ไม่ได้แล้วครับ
แต่ถ้าเปิดใหม่มาแล้วสร้าง combo box ใหม่ จะใช้ได้ครับ ทำวนไป

แต่สังเกตว่าเวลาเราพิมพ์ข้อความลงไปแม้ว่าจะพิมพ์ถูกต้องครบทุกตัวอักษร แต่มันก็แจ้งว่าข้อความที่พิมพ์ไม่ตรงถูก ต้องเลือกเท่านั้น
งงจริงครับ -..-



โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown, kitisak

3
สาเหตุ ไม่ทราบจริง ๆ

ผมลองโหลดไฟล์มาดู และลองพิมพ์ดูมันก็ไม่ขึ้นเหมือนที่ จขกท เป็นครับ
ผมเลยสร้างฟอร์มใหม่ และสร้างคอมโบบ๊อกใหม่ โดยใช้ row source เดิม ปรากฎว่าดูได้ครับ และส่งผลให้ฟอร์มหลัก manCustomer ดูได้ไปด้วยทั้งหมด

งงสิครับ 555

รอท่านอื่นครับ ผมอยากรู้เหมือนกัน



หลังจากสร้างฟอร์มแล้วก็มาดูที่ฟอร์มหลัก ใช้ได้เฉย แต่พอผมบักทึกแล้วปิด เปิดมาใหม่ ก็จะใช้ไม่ได้ครับ






โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

4
ผมลองมาหลายวิธีแล้ว ทั้งเก็บในคลาวด์ต่าง ๆ ทั้ง sql server / google sql / mysql
วิธีเอาไว้ในพื้นที่คลาวด์ไม่แนะนำเพราะช้า ยิ่งฐานข้อมูลใหญ่ขึ้น ยิ่งช้า เสี่ยงเกิดข้อผิดพลาดของข้อมูล

แนะนำแบบเม้นบนครับ
ถ้าใช้แบบออฟไลน์ วางไว้ที่เครื่องเซิฟเวอร์แล้วใช้งานแบบแชร์ไฟล์

ถ้าใช้แบบออนไลน์สำหรับ work from home ผมใช้ odbc+mysql ฐานข้อมูลบนเว็บไซต์ วิธีนี้ทำงานเร็วใกล้เคียงกับแบบออฟไลน์
ข้อแนะนำ
- เลือกโฮสดี ๆ ถ้าล่มบ่อยก็จะมีปัญหา
- ต้องปรับปรุงโค้ดนิดหน่อย
โพสต์นี้ได้รับคำขอบคุณจาก: OddyWriter, เก่ง

5
split database เอา front-end ไว้ที่เครื่องครู เอา back-end ไว้ที่เครื่องหลักซักที่
เชื่อมต่อกันด้วย wifi ก็ใช้งานได้ครับ แต่อาจจะมีหน่วง ๆ นะครับ
ผมไม่รู้ว่าถ้าใช้งานจริง ๆ ห่างกันระดับอาคาร จะให้งานได้ดีแค่ไหน หน่วง หรือค้างหรือป่าว
เพราะที่ผมเคยใช้งาน คือห่างกันแค่ในบริเวรห้องเท่านั้น

อีกวิธีก็คือใช้ back-end เป็น mysql ส่วน front-end ก็ใช้ access ตามปกติ แล้วเข้าถึงฐานข้อมูลผ่าน internet ซึ่งผมใช้วิธีนี้อยู่ ใช้งานได้ดี เร็วมาก ไม่มีปัญหาอะไรครับ ถ้าเน็ตไม่มีปัญหา
โพสต์นี้ได้รับคำขอบคุณจาก: pattaya48150, Araya, Paiwan

6
มาช้าไป เล่าให้ฟังแล้วกันนะครับ
ผมเพิ่งย้ายจาก ms access ไปใช้ sql server ใช้อยู่ซักพัก แล้วเปลี่ยนไปใช้ mysql เมื่อไม่นานมานี้ เพราะ online สะดวกกว่า ผมพบว่า sql server ค่อนข้างหนัก และช้า ขนาดผ่าน lan ยังช้ากว่า mysql ที่ออนไลน์

จากที่ได้ลองใช้ sql server อยู่ซักพัก
ต้องระวังคือ ทุกตารางต้องมี pk หลังจากการ export ไป sqlserver pk จะหาย
ชนิดข้อมูลก็จะถูกแปลง ซึ่งบางชนิดมันไม่ตรงกับที่เราต้องการ ต้องตรวจสอบและเปลี่ยนใหม่ เช่นพวก autonumber / yesno / currency
- join ต้องเป็นชนิดข้อมูลเดียวกัน ตัวเลขก็ต้องตัวเลข (ควรใช้เป็นตัวเลข เป็น text ไม่แนะนำ)
- type mismatch ส่วนใหญ่คือ ชนิดข้อมูลไม่ตรงกัน
- การดึงข้อมูลมาแสดง ต้องดึง pk มาด้วยเสมอ
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

7
ลืมแจ้งเพิ่มเติม ตอนกดปุ่ม save ลองจับ error ดู มันฟ้อง
error 3021 No current record.


ตอนนี้แก้ปัญหาได้แล้วครับ
ตอบไว้เผื่อใครเจอปัญหาเดียวกันครับ

--------------------------------------
ผมทดลองโคลนตาราง customer จากเดิมชนิดข้อมูล ที่เก็บค่า จริงเท็จ
case1 > customer_test1 ใช้เป็นค่าเดิมคือ bit(1) ใน Access แสดงชนิดข้อมูลเป็น Yes/No
case2 > customer_test2 แก้ไขจาก bit(1) เป็น tinyint(1) ใน Access แสดงชนิดข้อมูลเป็น Number(integer)
case3 > customer_test3 ลบฟิลด์ข้อมูล bit(1) ทิ้งทั้งหมด
case4 > customer_test3 สร้างฟิลด์ ชนิดข้อมูล bit(1) เหมือน case 1

ทดลองเปิดด้วยฟอร์มเดิม เปลี่ยนแค่ Record Source

case1 > แก้ไขข้อมูลไม่ได้ แจ้ง write conflict เหมือนเดิม
case2 > แก้ไขข้อมูลได้ปกติอย่างที่ต้องการ  (mySQL เก็บค่า True = -1 / False = 0)
case3 > แก้ไขข้อมูลได้ปกติอย่างที่ต้องการ 
case4 > แก้ไขข้อมูลได้ปกติอย่างที่ต้องการ  (mySQL เก็บค่า True = 1 / False = 0)

แต่มีตาราง Product ที่แม้ว่าค่าเดิมจะเป็น bit(1) ก็สามารถใช้งานได้ปกติ

ดูไปดูมา ปรากฎว่า ฟิลด์ที่จะเก็บค่าจริงเท็จ มีเป็นค่า NULL d

- สรุป -
เป็นเพราะฟิลด์ที่เป็น bit(1) มีค่า NULL
ใน case 4 ที่ลบ ฟิลด์ข้อมูล bit(1) ทิ้งแล้วสร้างใหม่ เป็น bit(1) เหมือนเดิม แต่ใช้งานได้ เพราะเมื่อสร้างใหม่ ค่าเริ่มต้นถูกกำหนดให้เป็น 0 ทั้งหมด ไม่มีฟิลด์ใดว่าง
ใน case 2 แม้มีค่าว่าง แค่ใช้งานได้ปกติ เดาว่า เพราะ tinyint(1) อนุญาตให้มีค่าว่างได้


แต่สุดท้ายผมจะเปลี่ยนฟิลด์ bit(1) เป็น tinyint(1) ทั้งหมด

ขอบคุณครับ

--------------------------------------
โพสต์นี้ได้รับคำขอบคุณจาก: สันติสุข

8
ขออนุญาติถามต่อยอดครับ วิธีแบบในคลิปสามารถใช้ NAS เป็นเซิฟเวอร์ได้ไหมครับ

เป็นไปได้แต่ไม่แนะนำครับ
nas หน้าที่หลักจัดการไฟล์
มันไม่ได้ออกแบบมาให้ทำงานในรูปแบบของ server สเปคก็ไม่แรงพอ

ถ้าจะแชร์ไฟล์และใช้ฐานข้อมูล sql ด้วย ใช้เป็น server ไปเลยดีกว่าครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Tongo

9
ทุกคำสั่ง CurrentDb.Execute ต้องมี dbSeeChanges ต่อท้ายครับ

เช่น CurrentDb.Execute "DELETE * from Customers WHERE Customer_ID = " & CurrentC_ID, dbSeeChanges
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

10
Tools >> Options >> Designers

ติ๊กออก Prevent Saving changes that require table re-creation



*คำอธิบาย การแก้ไขข้อมูลออกแบบตารางพวกนี้ มันจะดรอปและสร้างตารางขึ้นมาใหม่ในชื่อเดิม ซึ่งอาจจะส่งผลให้ข้อมูลสูญหายโดยไม่ได้ตั้งใจ เช่นเผลอลบคอลัมน์แล้วกดบันทึก ข้อมูลในคอลัมน์นั้นก็จะหายไปหมด
ถ้าแก้ไขเสร็จแล้ว ให้มาติ๊กกลับไว้เหมือนเดิมครับ
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

11
ไม่ค่อยเข้าใจคำถามครับ
หมายถึงปรับ Is Identity เป็น Yes แล้วกด save ไม่ได้หรอครับ ?

ได้กำหนด Primary Key ให้ ID รึยังครับ

และเวลาเพิ่มข้อมูล ID ห้ามเป็นค่าว่าง

โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

12
ถ้าหน้าบ้านใช้ Access ก็จะดึงข้อมูลมาแสดงได้เหมือนเดิมครับ
ข้อมูลที่เก็บก็เป็นตัวเลขเหมือนเดิมครับ ถ้า bound column ถูก

แต่ในตารางของ sql server ไม่มีฟังชั่น lookup มาแสดงแบบ access นะครับ เว้นแต่ว่าจะเขียน query เอง
โพสต์นี้ได้รับคำขอบคุณจาก: Tatchawin

13

ดูในคำสั่ง Dlookup ครับ ตารางชื่อ tblUser ไม่มี มันควรจะเป็น dbo_tblUser

ถ้ามีหลายตาราง วิธีแก้ชื่อตารางเก่าเป็นชื่อใหม่ ให้ Find and replace โค้ดทั้งหมดครับ
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

14
ติดตั้ง ดูคลิปนี้ครับ


แล้วก็ลองดูกระทู้นี้ครับ
https://www.thai-access.com/index.php?topic=1126
โพสต์นี้ได้รับคำขอบคุณจาก: Tatchawin

15
แค่หลักหมื่น ไม่น่าจะมากไปครับ เพราะผมลองหลักหมื่นก็สบาย ๆ
ผมแนะนำให้ export ออกมาเป็น excel ดีกว่าครับ

- ใน Acess การ export เป็น excel ต้องเป็น excel 97 - 2003 ครับ
- ใน sql server ตอนทำการ import ตรง Destination ให้เลือกเป็น SQL Server Native Client 11.0
- ตารางที่เป็น Identity Specification (autonumber) ให้ปรับเป็น No ก่อนที่จะ import ครับ หลัง import ให้มาปรับเป็น yes


//ตัวอย่างการ import
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

16
เบื้องต้นต้องทำให้ access ติดต่อกับ sql server ให้ได้ก่อนนะครับ (ทำตามคลิป)

ถ้าได้แล้ว สามารถ คลิกขวาที่ตารางที่อยู่ใน access



- เลือกแหล่งข้อมูลที่เราสร้างไว้ มันจะไปสร้างตารางไว้ใน sql server ให้เลย



ปล. มันอาจจะมีปัญหาอยู่บ้างนะครับ บางตาราง อาจจะ export ไม่ได้
ถ้า export ไม่ได้ ผมจะใช้วิธี export เป็น excel แล้วไป import ที่ sql server แทน
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

17
ลองดูคลิปนี้ครับ

โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

18
หมายถึงทำ access เป็น front end แล้ว sql server เป็น backend ใช่มั้ยครับ
ถ้าใช่ ไม่หายครับ แต่อาจจะมีปัญหาแค่บางคำสั่งทำงานไม่ได้ ต้องแก้ไขเล็ก ๆ น้อย ๆ

โพสต์นี้ได้รับคำขอบคุณจาก: Tatchawin

หน้า: [1] 2