اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

كيف أصمم عداد للسجلات التي ادخلتها ؟


النائف

الردود الموصى بها

السلام عليكم

أخواني اقوم بالعمل على بيانات كبيرة

وبعض الأوامر تستغرق ساعات لتنفيذ

مثل اضافة مائة الف سجل او التعديل

وسؤالي كيف يمكن عمل عداد يوضح لي كم تم تنفيذه

حاولت بطرق كثيرة لكن بدون فائدة

أتمنى المساعدة :)

رابط هذا التعليق
شارك

هذا كود يقوم بنسخ من جدول الى جدول بشروط معينه

عدد السجلات الناتج عن هذا كبير

كيف يمكن عمل نافذة توضح حال التنفيذ

Public Sub CreateFile()
v_HEAD = "H0122006122400001TESTIPO"
v_SUBSCRIPTION_DATE = "20061424"
v_RECEIVER_ID = "014"
v_CHANNEL_ID = "00024"
v_CHEQUE_NUMBER = " "
v_CREATION_TS = "20061224193600"
v_PORTFOLIO_NUMBER = "14"
v_app = 24000001
v_id = 104000001
v_dep = 144000001

DoCmd.RunSQL ("DELETE * FROM FORMATED")
Dim S, S2, S3, S4, S5, D1 As String
Dim v_count, v_shar, v_value As Double
Dim db As Database
Dim Rec_from, Rec_to As Recordset
Dim dat(49) As String
S1 = ""
S2 = ""
S3 = ""
S4 = ""
S5 = ""
D1 = ""

Set db = CurrentDb()
Set Rec_to = db.OpenRecordset("FORMATED")
Rec_to.AddNew
Rec_to!FORMATED_LINE = v_HEAD
Rec_to.Update

For t = 1 To 25
Set Rec_from = db.OpenRecordset("SELECT * FROM xxxHDR ", dbOpenDynaset, dbReadOnly)
Rec_from.MoveFirst

Do While Rec_from.EOF <> True
    v_app = v_app + 1
    v_id = v_id + 1
    For i = 1 To 46
        If IsNull(Rec_from(i)) Then
        dat(i - 1) = " "
        Else
        dat(i - 1) = Rec_from(i)
        End If
    Next i
    dat(3) = Mid(GenSubNo(Str(v_app)), 1, 9)
    dat(13) = Mid(Get_ID(Str(v_id)), 1, 10)
    v_ran = Int((20 * Rnd) + 1) * 10
    S1 = FillTxt(dat(0), " ", 1, "R") & FillTxt(dat(1), " ", 1, "R") & FillTxt(dat(2), " ", 12, "R") & FillTxt(dat(3), "0", 10, "L") & FillTxt(v_SUBSCRIPTION_DATE, " ", 8, "R") & FillTxt(v_RECEIVER_ID, "0", 3, "L") & FillTxt(v_CHANNEL_ID, "0", 5, "L") & FillTxt(dat(7), " ", 40, "R") & FillTxt(dat(8), " ", 40, "R") & FillTxt(dat(9), " ", 40, "R") & FillTxt(dat(10), " ", 40, "R")
    S2 = FillTxt(dat(11), " ", 40, "R") & FillTxt(dat(12), " ", 1, "R") & FillTxt(dat(13), " ", 15, "R") & FillTxt(dat(14), " ", 1, "R") & FillTxt(dat(15), " ", 1, "R") & FillTxt(dat(16), " ", 8, "R") & FillTxt(dat(17), " ", 25, "R") & FillTxt(dat(18), " ", 1, "R") & FillTxt(dat(19), " ", 10, "R") & FillTxt(dat(20), " ", 40, "R")
    S3 = FillTxt(dat(21), " ", 25, "R") & FillTxt(dat(22), " ", 2, "R") & FillTxt(dat(23), " ", 10, "R") & FillTxt(dat(24), " ", 20, "R") & FillTxt(dat(25), " ", 20, "R") & FillTxt(dat(26), "0", 3, "L") & FillTxt(v_ran, "0", 10, "L") & FillTxt((v_ran * Val(dat(26))), "0", 10, "L") & FillTxt((v_ran * Val(dat(26))) * 10, "0", 13, "L") & FillTxt(dat(30), " ", 1, "R")
    S4 = FillTxt(v_CHEQUE_NUMBER, " ", 10, "L") & FillTxt(dat(32), "0", 20, "L") & FillTxt(dat(33), " ", 40, "R") & FillTxt(dat(34), " ", 15, "R") & FillTxt(dat(35), " ", 1, "R") & FillTxt(dat(36), " ", 40, "R") & FillTxt(dat(37), " ", 10, "R") & FillTxt(dat(38), " ", 25, "R") & FillTxt(dat(39), " ", 2, "R") & FillTxt(dat(40), " ", 10, "R")
    S5 = FillTxt(dat(41), " ", 20, "R") & FillTxt(dat(42), " ", 20, "R") & FillTxt(dat(43), " ", 10, "R") & FillTxt(v_CREATION_TS, " ", 14, "R") & FillTxt(v_PORTFOLIO_NUMBER, "0", 10, "L")

    If Val(dat(26)) > 1 Then
        D1 = ""
        Set Rec_dep = db.OpenRecordset("SELECT * FROM xxxDTL WHERE SUBSCRIBER_POI ='" & Rec_from.SUBSCRIBER_POI & "'", dbOpenDynaset, dbReadOnly)
        Rec_dep.MoveFirst
        
        Do While Rec_dep.EOF <> True
            v_dep = v_dep + 1
            v_deps = Mid(Get_ID(Str(v_dep)), 1, 9)
            D1 = D1 & FillTxt(v_deps, " ", 15, "R") & FillTxt(Rec_dep(2), " ", 40, "R") & FillTxt(Rec_dep(3), " ", 1, "R")
            Rec_dep.MoveNext
        Loop
        
        Rec_dep.Close
        Else
        D1 = ""
    End If
    
    Rec_to.AddNew
    Rec_to!FORMATED_LINE = S1 + S2 + S3 + S4 + S5 + D1
    Rec_to.Update
    v_count = v_count + 1
    v_shar = v_shar + v_ran * Val(dat(26))
    v_value = v_value + v_ran * Val(dat(26)) * 10
    
    Rec_from.MoveNext
Loop
Rec_from.Close
Next t
Rec_to.AddNew
Rec_to!FORMATED_LINE = "D" & FillTxt(Str(v_count), "0", 8, "L") & FillTxt(Str(v_shar), "0", 10, "L") & FillTxt(Str(v_value), "0", 15, "L")
Rec_to.Update
Rec_to.Close
MsgBox "Done"

End Sub

تم تعديل بواسطه النائف
رابط هذا التعليق
شارك

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information