ต้องการย้ายฐานข้อมูล จาก foxpro มาเป็น ms access
กระทู้เก่าบอร์ด อ.Yeadram

 1,024   4
URL.หัวข้อ / URL
ต้องการย้ายฐานข้อมูล จาก foxpro มาเป็น ms access

ต้องการย้ายฐานข้อมูล จาก foxpro มาเป็น ms access
ต้องนี้ติดปัญหาอยู่สองเรื่องครับ
1.การตัดคำจากจากข้อมูล ที่อยู่ลูกค้า
ฐานข้อมูลถูกเก็บไว้ในฟิลด์เดียว ต.ย.เช่น
ADD15หมู่3 บางปะกอกADD1ADD2ราษฏร์บูรณะ กรุงเทพADD2TEL025647134TELFAX024657135FAX

ผมต้องการแยกเก็บเป็น
ADD1 = 5หมู่3 บางปะกอก
ADD2 = ราษฏร์บูรณะ กรุงเทพ
TEL = 025647134
FAX = 024657135

2.การคำนวณส่วนลด
ฐานข้อมูลถูกเก็บไว้ในฟิลด์เดียวเหมือนกัน
50%+10%+3%+100 หมายถึง ลด50% ลดอีก10% ลดอีก3% ลดอีก 100 บาท
หรืออาจจะเป็น
50%+100 หมายถึง ลด50% ลดอีก 100 บาท
หรืออาจจะเป็น
100 หมายถึง ลด 100 บาท

ซึ่งผมไม่รู้ว่าจะตัดคำให้คำนวณอย่างไร รบกวนแนะนำด้วยนะครับ



4 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R19485
1. สร้าง Query ตามนี้ครับ

SELECT
InStr(1,[FoxAddress],"ADD1") AS ADD1Start
, InStr([ADD1Start]+1,[FoxAddress],"ADD1") AS ADD1End
, Mid([FoxAddress],Len("ADD1")+[ADD1Start],[ADD1End]-[ADD1Start]-Len("ADD1")) AS ADD1
, InStr(1,[FoxAddress],"ADD2") AS ADD2Start
, InStr([ADD2Start]+1,[FoxAddress],"ADD2") AS ADD2End
, Mid([FoxAddress],Len("ADD2")+[ADD2Start],[ADD2End]-[ADD2Start]-Len("ADD2")) AS ADD2
, InStr(1,[FoxAddress],"TEL") AS TELStart
, InStr([TELStart]+1,[FoxAddress],"TEL") AS TELEnd
, Mid([FoxAddress],Len("TEL")+[TELStart],[TELEnd]-[TELStart]-Len("TEL")) AS TEL
, InStr(1,[FoxAddress],"FAX") AS FAXStart,
InStr([FAXStart]+1,[FoxAddress],"FAX") AS FAXEnd
, Mid([FoxAddress],Len("FAX")+[FAXStart],[FAXEnd]-[FAXStart]-Len("FAX")) AS FAX
FROM tb_Fox
2 @R19489
ขอบคุณครับ คุณPichaiTc พอเห็นภาพแล้วน่าจะทำได้ครับ

ยังไงฝากข้อ 2 ด้วยนะครับ ฝาก อ. และผู้รู้ด้วยนะครับ
(ถ้าให้ต้องพิมพ์ใหม่คงไม่ไหว เพราะข้อมูลเก็บมานานกว่า 10ปีแล้ว ยังใช้ dos อยู่เลย)
3 @R19496
2. สร้าง table ใหม่ ตามโครงสร้างนี้
DiscountID Long
DiscountSeq Long
DiscountRate Single

เขียน code วน Loop เพื่อตัด string โดยดูจาก +
เพื่อ insert ลง table ที่สร้างไว้

ตัวอย่างข้อมูล
DiscountID - DiscountSeq - DiscountRate
1 - 1 - 0.5 (= 50%)
1 - 2 - 0.1 (= 10%)
1 - 3 - 0.03 (= 3%)
1 - 4 - 100

เวลาใช้งาน
เลือกใช้โดย Where DiscountID = เงื่อนไขที่ต้องการ
คำนวณเรียงตาม DiscountSeq
คำนวณค่าโดย
If DiscountRate < 1 then
Discount = Amount * DiscountRate
Else
Discount = DiscountRate
End If
4 @R19502
ขอบคุณ คุณ pichaiTc อีกครั้ง พอดีพยายามอยู่นานเหมือนกันครับ
ได้ code มาตามนี้ เอามาแชร์กันครับ
แต่ต้องไปทำในฟอร์ม

Private Sub Form_Current()
Dim MemDisc As Double
Dim MemStartPoint As Integer
Dim MemEndPoint As Integer

TxtUnitPrice = [PRICE]

MemStartPoint = 1


If IsNull([DISCSTR]) Then

Else

    If (InStr([MemStartPoint], [DISCSTR], "%")) = 0 Then
        If [MemStartPoint] > Len([DISCSTR]) Then
              
        Else
       
            MemDisc = Mid([DISCSTR], [MemStartPoint], Len([DISCSTR]) - ([MemStartPoint] - 1))
            TxtUnitPrice = TxtUnitPrice - MemDisc
       
        End If
        Exit Sub
    
    Else

        MemEndPoint = InStr([MemStartPoint], [DISCSTR], "%")
        MemDisc = Mid([DISCSTR], [MemStartPoint], ([MemEndPoint] - [MemStartPoint]))
       
        TxtUnitPrice = TxtUnitPrice * (1 - (MemDisc / 100))
    
    End If


    MemStartPoint = MemEndPoint + 1

    Do Until [MemStartPoint] > Len([DISCSTR])

    If IsNull([DISCSTR]) Then
    
    Else
    
        If (InStr([MemStartPoint], [DISCSTR], "%")) = 0 Then
            If [MemStartPoint] > Len([DISCSTR]) Then
                    
            Else
            
               MemDisc = Mid([DISCSTR], [MemStartPoint], Len([DISCSTR]) - ([MemStartPoint] - 1))
               TxtUnitPrice = TxtUnitPrice - MemDisc
            
            End If
            Exit Sub
    
        Else
       
            MemEndPoint = InStr([MemStartPoint], [DISCSTR], "%")
            MemDisc = Mid([DISCSTR], [MemStartPoint] + 1, ([MemEndPoint] - ([MemStartPoint] + 1)))
            
            TxtUnitPrice = TxtUnitPrice * (1 - (MemDisc / 100))
       
        End If
    End If
    
    MemStartPoint = MemEndPoint + 1

    Loop
End If
End Sub

สามารถจะทำส่วนลดเป็น%ได้เรื่อย แต่ส่วนลดเป็นบาทจะอยู่ท้ายสุดได้ครั้งเดียว
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2650s