PDA

View Full Version : درباره back-end و front-end



صبا9841
یک شنبه 19 فروردین 1386, 11:33 صبح
یک برنامه data base را میتوان در دو فایل mdb جدا کرد به نحوی که همه داده ها(tables) را بصورت back-end و اصل برنامه (queries, forms, reports, macros, modules, and shortcuts to data access pages (mk:@MSITStore:D:\Program%20Files\Microsoft%20Offi ce\Office10\1033\acmain10.chm::/html/achowSplitApplicationIntoFrontendInterfaceSharedBa S.htm#)) را به شکل Front-end ارائه کرد.

برای این کار (split) باید جدولها را Relink کرد که توضیح روش انجام این کار توسط دوستان در نمونه پست 5 اینجا (http://barnamenevis.org/forum/showthread.php?t=51058&highlight=Relink) هست.

حالا؛برای وضعیت محدود سازی سطح دسترسی (peremision) اشیا در FE را چکار باید کرد؟


Private Sub Form_Load()

On Error Resume Next

ChangeTableDetails

DoCmd.Close acForm, Me.FormName

End Sub

Public Function ChangeTableDetails()

Dim dbs As DAO.Database
Dim tdf As DAO.TableDef
Dim tdfLinked As DAO.TableDef

Dim strGetCurrentLinkedPath As String
Dim strGetCurrentLinkedTableName As String

Dim intTableCounter As Integer
Dim intNumberOfTables As Integer

Const strBackendTargetDbPassword = ";PWD=plajsgbd"

On Error GoTo ErrorDetected

Set dbs = CurrentDb

dbs.TableDefs.Refresh
intNumberOfTables = dbs.TableDefs.Count

For Each tdf In dbs.TableDefs

If Nz(tdf.Connect, "") <> "" Then

'Store current linked table details
strGetCurrentLinkedTableName = tdf.Name
strGetCurrentLinkedPath = tdf.Connect
strGetCurrentLinkedPath = FindDatabasePathFr0mLinkedString(strGetCurrentLink edPath)

'Delete current linked table
DoCmd.DeleteObject acTable, tdf.Name

'Rebuild linked table from stored data
'Ensure the password is correct
Set tdfLinked = dbs.CreateTableDef(strGetCurrentLinkedTableName)
tdfLinked.Connect = strBackendTargetDbPassword & ";DATABASE=" & strGetCurrentLinkedPath
tdfLinked.SourceTableName = strGetCurrentLinkedTableName
dbs.TableDefs.Append tdfLinked

End If

intTableCounter = intTableCounter + 1

If intNumberOfTables = intTableCounter Then

GoTo ClearDownArrays

End If

Next

Exit Function

ErrorDetected:

If Err.Number = 3031 Then

MsgBox "The password supplied with the function (ChangeTableDetails) " & vbCrLf & "is incorrect for the Backend Db." & vbCrLf & vbCrLf & _
"Please provide a valid password for Const 'strTargetDbPassword'", vbExclamation, "Invalid Password Set"

Else

MsgBox Err.Number & " - " & Err.Description, vbCritical, "Unexpected error detected, update aborted"

End If

ClearDownArrays:

Set tdf = Nothing
dbs.Close
Set dbs = Nothing

End Function

Public Function FindDatabasePathFr0mLinkedString(GetLinkedString As String) As String

Dim intStartPosition As Integer
Dim intEndPosition As Integer

On Error Resume Next

intStartPosition = InStr(1, GetLinkedString, "Database=") + 9
intEndPosition = InStr(1, GetLinkedString, ".mdb") + 4
FindDatabasePathFr0mLinkedString = MID(GetLinkedString, intStartPosition, intEndPosition)

لطفاً نظرتان را بفرمائید.

شاپرک
یک شنبه 19 فروردین 1386, 14:40 عصر
لطفا یک نمونه برنامه بذارید .

moustafa
یک شنبه 19 فروردین 1386, 16:32 عصر
با اجازه یه توضیح جزئی :
tools/database utilities/data base splitter

کاربرد اون تو شبکه است تا از دستکاری اشیاءو امپورت و اکسپورت اطلاعات مصون ماند

صبا9841
دوشنبه 20 فروردین 1386, 08:50 صبح
با اجازه یه توضیح جزئی :
tools/database utilities/data base splitter

کاربرد اون تو شبکه است تا از دستکاری اشیاءو امپورت و اکسپورت اطلاعات مصون ماند

از توضیح زیر که از این لینک (http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/dnaraccessdev/html/ODC_AccessVersion20Security.asp) است چه نتیجه میگیرید؟


Securing an Application with a Split Program Database and Data Database
You have written an application using a split front-end/back-end architecture. Your data is stored in Data.mdb, and your code, forms, reports, and so forth are in Program.mdb, along with attached tables pointing to tables in Data.mdb. You want to secure both databases and distribute them to your users. When they install Program.mdb, you want them to be able to re-attach the tables in Data.mdb, based on the network share name on which they will keep Data.mdb, and you don't necessarily know the name of this share when it comes time to secure your application

seeker
دوشنبه 20 فروردین 1386, 09:16 صبح
با اجازه یه توضیح جزئی :
tools/database utilities/data base splitter

کاربرد اون تو شبکه است تا از دستکاری اشیاءو امپورت و اکسپورت اطلاعات مصون ماند
ولی متاسفانه حتی از طریق اسپلیتر هم جداول اکسپورت و امپورت میشن

moustafa
دوشنبه 20 فروردین 1386, 19:03 عصر
من در این زمینه کار نکردم نمی تونم اظهار نظر کنم ولی در اون "پست زمینه " که شامل جداول نیست کاربر چطوری می تونه اطلاعات تیبلها رو امپورت یا اکسپورت کنه ؟
"صفحه 523 کتاب راهنمای پیتر نورتن برای برنامه نویسی Access2000

صبا9841
سه شنبه 21 فروردین 1386, 08:42 صبح
در اون "پست زمینه " که شامل جداول نیست کاربر چطوری می تونه اطلاعات تیبلها رو امپورت یا اکسپورت کنه ؟


اگر ممکن است بیشتر توضیح بدهید.
منظور شما این است که اطلاعاتی که در تیبلهای BE هست و رلینک هستند را نمیتوان امپورت کرد؟
یا ...؟

seeker
سه شنبه 21 فروردین 1386, 16:16 عصر
میتونه از روی لینک تیبل لینک بسازه
یعنی اگه برای امنیت دارید اسپلیتش میکنید فایده نداره
فرض:
فایلی که پس از اسپلیت جداول در آن قرار دارند پسورد داره و فقط اون یکی فایل میتونه بهش وصل شه چون پسورد رو یوزر نداره و فقط برای برنامه تعریف کردیم پس ایمپورت کردن جداول ازروی فایل اول امکان پذیر نیست
ولی فایل دوم دارای لینک تیبل میباشد که از روی اونها بدون هیچ مشکلی میتوان یک لینک تیبل دیگه ساخت و به تمام داده های جدول دسترسی پیدا کرد

mohammadgij
سه شنبه 21 فروردین 1386, 16:22 عصر
خب در اکسس معمولی WorkGroup رو برای همین ساختن. شما میتونید دسترسی به کاربر ها رو فقط برای مثلا Select بدید

moustafa
سه شنبه 21 فروردین 1386, 17:48 عصر
فایل اول در اختیار کاربران عادی در یک محیط چند کاربر قرار میگیره که نتونند امپورت کنند
فایل دوم در اختیار مدیر سیستم

moustafa
سه شنبه 21 فروردین 1386, 19:08 عصر
استنباط من از صفحه 521 کتاب راهنمای پیترنورتن برای برنامه نویسی Access
در یک محیط چند کاربره با مزیتهای زیر:
1-کاهش بار ترافیک شبکه و افزایش سرعت و کارائی آن
مثلا فرمهای ازاد ،منوها ،کادرهای تبادل که در pc کاربران نگهداری میشه سریعتر بار گذاری میشه
2- مجزا نگه داشتن جداول و اجزای وسط کاربر در دو مکان متفاوت باعث میشه که هرگونه تغییر در فرمها وگزارشات فقط در pc کاربر به سادگی و به سرعت انجام گیرد
فرض کنید در یک محیط ده کاربره با یه جدول شامل 200 هزار رکورد اگه یه فرم تغیر کنه در حالت عادی باید برای هر ده کاربر اطلاعات 200 هزار رکورد را امپورت و تغییرات رو اعمال کرد
در حالت splitفقط فرمها بسرعت جایگزین میشند
3-هر یک از کاربران می توانند پس زمینه مخصوص بخود رو داشته باشند کارمندان بخش فروش مستقل از خرید فقط به فرمها ،اطلاعات و گزارشات مخصوص بخود دسترسی داشته باشند به این طریق امنیت برنامه بالا میره وچنانچه کاربری یا .... بخواد از برنامه کپی برداری کن فقط به یه تکه ناقص و محدود دستیابی می کنه

mohammadgij
چهارشنبه 22 فروردین 1386, 10:26 صبح
ولی من با توجه به اینکه از این خصوصیت در اکسس معمولی بسیار استفاده کردم باید بگم که به راحتی و با استفاده از جداول لینک شده به فایل دارای پسورد میشه به اطلاعات دسترسی پیدا کرد با ایمپورت کردن لینک جداول در یک فایل جدید. به راحتی هم لینک ها ایمپورت میشن و در فایل جدید لینک میشن به جداول اسپلیت شده

moustafa
چهارشنبه 22 فروردین 1386, 10:35 صبح
محمد جان توشبکه چی ؟ گفته های بالا صحت داره ؟

seeker
چهارشنبه 22 فروردین 1386, 10:39 صبح
ولی من با توجه به اینکه از این خصوصیت در اکسس معمولی بسیار استفاده کردم باید بگم که به راحتی و با استفاده از جداول لینک شده به فایل دارای پسورد میشه به اطلاعات دسترسی پیدا کرد با ایمپورت کردن لینک جداول در یک فایل جدید. به راحتی هم لینک ها ایمپورت میشن و در فایل جدید لینک میشن به جداول اسپلیت شده
منم به خدا همین هارو گفتم

mohammadgij
چهارشنبه 22 فروردین 1386, 10:53 صبح
البته شما توی شبکه قابلیت تعریف دسترسی رو هم توی شبکه دارین ولی خب همون کاربرانی که توی شبکه اجازه دسترسی دارن میتونن این کار رو انجام بدن. البته شما وقتی که روی بانک اسپلیت شده شامل جداولتون از طریق WorkGroup تعیین سطح دسترسی بکنید و در ضمن بر روی فابل هایی که برای Clientها نصب میکنید که شامل فرم ها ، جداول لینک شده و ............ هست هم میتونید از طریق WorkGroup پسورد بزارید و تعیین سطح دسترسی کنید. و اگر برنامتون رو MDE کنید و فرم StartUp داشته باشید و دکمه خروج برنامتون حتما Quit کنه. امکان اینکه بتونه به محیط جداول دسترسی پیدا کنه تقریبا صفره مگر اینکه پسوردهای WorkGroup رو پیدا کنه و یا MDE رو بتونه با نرم افزار خاصی ریسورس کنه.

صبا9841
چهارشنبه 22 فروردین 1386, 11:22 صبح
البته شما توی شبکه قابلیت تعریف دسترسی رو هم توی شبکه دارین ولی خب همون کاربرانی که توی شبکه اجازه دسترسی دارن میتونن این کار رو انجام بدن. البته شما وقتی که روی بانک اسپلیت شده شامل جداولتون از طریق WorkGroup تعیین سطح دسترسی بکنید و در ضمن بر روی فابل هایی که برای Clientها نصب میکنید که شامل فرم ها ، جداول لینک شده و ............ هست هم میتونید از طریق WorkGroup پسورد بزارید و تعیین سطح دسترسی کنید. و اگر برنامتون رو MDE کنید و فرم StartUp داشته باشید و دکمه خروج برنامتون حتما Quit کنه. امکان اینکه بتونه به محیط جداول دسترسی پیدا کنه تقریبا صفره مگر اینکه پسوردهای WorkGroup رو پیدا کنه و یا MDE رو بتونه با نرم افزار خاصی ریسورس کنه.

جنابmohammadgij
جایی دیدم که کسی گفته بود که پسوردهای WorkGroup را هم باید همراه فایل MDE (دقیقاً فایلی با همین شرایط بالا) به clint ببری. درست گفته؟ یا لازم نیست؟

mohammadgij
چهارشنبه 22 فروردین 1386, 11:36 صبح
من فکر میکنم که درست گفته . چون اکه MDB بذاری خیلی راحت میشه Startup رو غیر فعال کرد و به راحتی به جداول و اطالاعات دسترسی پیدا کرد و تازه اگر به محیط اکسس دسترسی پیدا کنه از داخل همون بانک اگر یک MِDB جدید بسازه می تونه تمام آبجکت ها رو Importکنه توی برنامه جدید و نام برنامه رو هم تغییر بده و بذاره جای برنامه ای که دارای سطح دسترسی و پسورده و میتونه اینکار رو با خود جداول اسپلیت شده هم بکنه و جداول هم قابل دسترس میشن بران همه و .........
پس MDE کردن بسیار بهتر از MDB بودن هست و حتما بستن Shift و داشتن فرم StartUp لازم است