هنا شرح للمثال في الأعلى
كود
ScriptName = Request.ServerVariables("Script_Name")
هنا سوف يتم اخذ امتداد الملف.
كود
ScriptName = Mid(ScriptName,InstrRev(ScriptName,"/") + 1)
بعد الحصول على امتداد الصفحة سوف نستخدم الدالة mid حيث سوف يتم وضع امتداد الصفحة التي حصلنا عليه أولاً المخزنه في المتغير ScriptName.
ومن خلال هذا الكود نريد أن نحصل على اسم الصفحة فقط دون الحصول على الامتداد، أي بعد أشاره / مع وضع قيمة واحد لها، يتم اخذ اسم الصفحة فقط.
كود
RootDir = Replace(Request.ServerVariables("Script_Name"),"/" & ScriptName,"")
هنا سوف نقوم باستخدام الدالة replace حيث سوف نقوم باخذ فقط اسم المجلد التي تحتوي على الصفحة دون أخذ اسم الصفحة ويتم تخزينه بداخل المتغير RootDir.
كود
MyDirectory = Server.MapPath (RootDir)
هنا سوف نقوم بجلب المسار الكلي لهذا المجلد وتخزينه داخل المتغير MyDirectory.
كود
Set FSOdir = Server.CreateObject("Scripting.FileSystemObject")
Set MyDir = FSODir.GetFolder (MyDirectory)
Set FileNms = Mydir.Files
هنا سوف نستخدم ال file system object، لكي نحصل على الملفات التي موجود في المسار المخزن داخل المتغير MyDirectory.
الكود التالي سوف يتم شرحه في مشاركة لوحدها ، وذلك لانه لم يحن موعد الشرح له.
كود
CmpctFile = Request.QueryString ("Compact")
If CmpctFile<>"" then
MyPos = Instr(1,CmpctFile,".mdb",1) - 1
CmpctFileDst = Mid(CmpctFile,1,MyPos) & "Cmpcted" & ".mdb"
AccessDB=MyDirectory & "\" & CmpctFile
DestDB=MyDirectory & "\" & CmpctFileDst
Set objJetEngine = Server.CreateObject("JRO.JetEngine")
objJetEngine.CompactDatabase _
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & AccessDB & ";", _
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & DestDB & ";"
Set objJetEngine = Nothing
FSODir.DeleteFile AccessDB,True
FSODir.CopyFile DestDB,AccessDB
FSODir.DeleteFile DestDB,True
Session(CmpctFile) = 1
Response.Redirect "compact.asp?CmpctedDB=" & CmpctFile & "&Boyut=" & Request.QueryString ("Boyut")
End If
------------------------------------------
كود
<%
For Each FNms In FileNms
%>
هنا سوف نستخدم جملة ال for لكي نخزن جميع الملفات التي بداخل المتغير FileNms التي تم تخزين فيه الملفات، حيث وبنفس الوقت سوف يتم عمل for loop لها.
كود
MapPathLen= Len(MyDirectory) + 2
If Instr(1,Fnms,".mdb",1) > 0 then
FileNm = Mid(Fnms,MappathLen)
هنا يتم عمل فحص على امتداد الملفات اذا كانت لها الامتداد mdb من خلال استخدام الدالة Instr، سوف نفذ الجمل التي تليها.
المتغير FileNm يتم تخزين به اسم قاعدة البيانات.
كود
<%
If Session(FileNm) = 1 then
Response.Write FileNm & " [Compacted]"
else
Response.Write FileNm
End if
%>
يوجد لدينا هنا session حيث سوف يتم الفحص اذا انت قيمته 1 يطبع اسم القاعدة التي توجد داخل المتغير filenm ويطبع بجانبها انه تم ضغطها.
وفي حالو قيمته لا تساوي واحد فقط يظهر القاعده.
متى تصبح قيمة ال session واحد هذا ما سوف نعرفه بعد شرح الكود الذي ذكرت لكم بأنه سوف يتم شرحه بمشاركة لوحدها.
------------------------------
كود
<%
DBFileSize = Fnms.Size / 1024
Response.Write DBFileSize & " Kb"
%>
هنا سوف يتم اخذ حجم الملف مع قسمته على 1024 حتى يتم تحويله إلى كيلو بايت، وتخزينه داخل المتغير DBFileSize، وبعدها يتم طباعة الحجم بعد وضع العملية الحسابية.
كود
<%=FileNm%>&size=<%=DBFileSize%>
هنا سوف يتم واضع ويحتوي على متغيرين متغير يحتوي على اسم القاعده، ومتغير يحتوي على حجم القاعده.
وفي المشاركة التالية سوف يتم شرح الكود الذي قمت بتأجيل شرحه.
--------------------
منذ متى يا أقزام بدأ يروادكم التفكير بالتعالي على عمالقة القسام؟