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

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

قام بنشر

السلام عليكم

اخوتي الاعزاء

* هل يمكن تغيير اسم قاعدة البيانات عن طريق الكود بالاعتماد على قيمة حقل بالنموذج (مثلا عند زر الخروج ) 

وشكرا لكم 

قام بنشر

على حد علمي ، هو ممكن  لكن مش ممكن

بمعنى: هناك طريقة تنجح نظرياً فتقوم قاعدة البيانات بتغيير اسمها عند الخروج

لكن : لا يمكن أن تقوم قاعدة البيانات بتغيير اسمها أثناء فتحها سواء خرجت أو دخلت  ، حتى لو أصبحت القاعدة قائمة أو راقدة

والطريقة المقترحة أن قاعدة البيانات تقتل نفسها عن طريق قيامها بعمل :

1 - نسخة منها بالاسم الذي تريده سواء من قيمة حقل أو خلافه.

2 - ملف يقوم بحذف النسخة القديمة ويتم تشغيله في زر الخروج.

طبعا طريقة انشاء نسخة باسم جديد ستجد ذلك في المنتدى

 

 

  • Like 1
  • أفضل إجابة
قام بنشر

تفضل هذا كود لتغيير اسم قاعدة البيانات الحالية يمكن استعماله بعد الضغط على زر مثلا

Public Sub RenameMe(newname As String)
 Dim dbname As String, ext As String, lockext As String, accesspath As String, scriptpath As String, idx As Integer
 Const TIMEOUT = 30
 scriptpath = Application.CurrentProject.FullName & ".dbrename.bat"
 accesspath = SysCmd(acSysCmdAccessDir) & "msaccess.exe"
 For idx = Len(CurrentProject.FullName) To 1 Step -1
     If Mid(CurrentProject.FullName, idx, 1) = "." Then Exit For
 Next idx
 dbname = Left(CurrentProject.FullName, idx - 1)
 ext = Mid(CurrentProject.FullName, idx + 1)
 lockext = IIf(Left(ext, 2) = "ac", "laccdb", "ldb")
 
 Dim s As String
s = s & "chcp 1256" & vbCrLf
 s = s & "SETLOCAL ENABLEDELAYEDEXPANSION" & vbCrLf
 s = s & "SET /a counter=0" & vbCrLf
 s = s & ":CHECKLOCKFILE" & vbCrLf
 s = s & "ping 0.0.0.255 -n 1 -w 100 > nul" & vbCrLf
 s = s & "SET /a counter+=1" & vbCrLf
 s = s & "IF ""!counter!""==""" & TIMEOUT & """ GOTO CLEANUP" & vbCrLf
 s = s & "IF EXIST """ & dbname & "." & lockext & """ GOTO CHECKLOCKFILE" & vbCrLf
 s = s & "ren """ & dbname & "." & ext & """ """ & newname & "." & ext & """" & vbCrLf
 s = s & """" & accesspath & """ """ & CurrentProject.Path & "\" & newname & "." & ext & """" & vbCrLf
 s = s & ":CLEANUP" & vbCrLf
 s = s & "del %0"
 Dim intFile As Integer
 intFile = FreeFile()
 Open scriptpath For Output As #intFile
 Print #intFile, s
 Close #intFile
 
 s = """" & scriptpath & """"
 Shell s, vbHide
 
Application.Quit acQuitSaveAll
End Sub

وطريقة استدعائه

RenameMe "mynewname"

لاحظ أن الاسم الجديد mynewname بدون الامتداد لأنه يحافظ على نفس امتداد الملف

بالتوفيق

  • Like 1
قام بنشر (معدل)

السلام عليكم

استاذ @أ / محمد صالح

شكرا جزيلا  الكود شغال تمام 

1- اريد ان يكون  : "اسم حقل معين بالنموذج" RenameMe  يساوي اسم حقل بالنموذج مثل حقل اسم الموظف  

2- ان يوضع الكود في زر عند الاغلاق  عند الخروج بدون مايفتح قاعدة البيانات مرة اخرى

عملت متغير ولم تنجح الطريقة

وشكرا لك

تم تعديل بواسطه Ahmed_J
قام بنشر

لا يوجد مشكلة

ضع كود الاستدعاء في حدث عند الضغط على زر الإعلاق

renameMe me.fieldName

مع استبدال اسم الحقل بما تريد

ولعدم فتح القاعدة بعد إعادة التسمية يمكنك حذف هذا السطر من الإجراء

s = s & """" & accesspath & """ """ & CurrentProject.Path & "\" & newname & "." & ext & """" & vbCrLf

بالتوفيق

قام بنشر (معدل)

السلام عليكم

استاذ @أ / محمد صالح

عندما يكون اسم الحقل باللغة العربية  تظهر اسم قاعدة البيانات بحروف غير مفهومة  كما في الصورة

هل ممكن تعديل ذلك

تحياتي لك

Untitled.jpg

تم تعديل بواسطه Ahmed_J
قام بنشر

لدعم اللغة العربية في ملفات الدوس أضف هذا السطر كأول سطر في النص الذي يكتب في الباتش

s = s & "chcp 1256" & vbCrLf

بعد الإعلان عن المتغير s

dim s as String

 

  • Like 2
قام بنشر

السلام عليكم

استاذ @أ / محمد صالح

بارك الله فيك

كل شيء تمام والحمد لله

فقط لدي سؤال اخير لو سمحت؟

لو بدي اجعل اسم قاعدة البيانات  تقبل كل شيء (حقل فيه تاريخ او رقم او اسم )

هل اقوم فقط بتغيير  تعريف المتغير في الوحدة النمطية (As String)  الى (As Variant) في كل الاسطر للوحدة النمطية  ام ماذا

وشكرا لك

 

قام بنشر

مفيش مشكلة 

المهم مراعاة شروط تسمية الملفات في ويندوز ولا داعي لتغيير نوع بيانات المتغير 

فغير مسموح مثلا

بالشرطة المائلة / او \ وكذلك علامة الاستفهام ؟ وكذلك > او < وهكذا

  • Like 1
  • Thanks 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information