# پایگاه‌های داده > سایر پایگاه‌های داده > Access >  ارتباط و دستورات sql

## powerboy2988

سلام
من یه پایگاه داده درست کردم تو access که توش چند تا فرم دارم که مثلا اسمش فرم پرسنل. تو این فرم 3 تا از فیلدام به اسم id , name , family هستش. من فرم های دیگه ای هم ایجاد کردم که بقیه هم دارای چندتا فیلد هستن که 3تا فیلد از آنها همین 3تا فیلد id , name, family هستش. ارتباط بین جدول ها یه این صورت هستش که همه جدول ها اون 3تا فیلدشون ارتباط دارن با 3تا فیلد فرم پرسنل.
حالا کاری که من می خوام انجام بدم اینکه وقتی فرم پرسنل رو باز کردم و توش یه دکمه قرار دادم که وقتی کلیک می کنم روش مثلا فرم شماره 4 رو باز می کنه من می خوام وقتی فرم شماره 4 باز شد بیاد بر اساس 3تا فیلدی که دربالا معرفی کردم 3تا فیلد  id, name, family خودشو  رو برابر  با 3تا فیلد id, name , family فرم پرسنل قرار بده و بر این اساس یه سرچ کنه و بقیه اطلاعات فرم 4 رو بر همین اساس 3تا فیلد نشون بده

----------


## powerboy2988

البته من این کار رو تو access 2007 انجام دادم.

----------


## Ali_Fallah

ابتدا بصورت ویزارد دکمه ای روی فرم گذاشته سپس بعد از انتخاب فرم مورد نظر ، بصورت شکل زیر عمل کنید...

----------


## powerboy2988

این کاری نیست که من می خوام 
لطفا سوالمو دوباره بخون ، منظورمو اشتباه برداشت کردی

----------


## صبا9841

فقط کافیه یکی از فیلدها را مثلا id را لینک کنی و بعدبا این کد معرفیش کنی



> stLinkCriteria = "[fild]=" & "'" & Me![Text] & "'"l

----------


## powerboy2988

تو access 2007 نمی دونم چرا نمیشه برنامه نویسی کرد. همش باید از ماکرو استفاده کنی. این کار رو هم تست کردم جواب نداد. در ضمن من 3 تا مشخصه دارم

----------


## صبا9841

فایل نمونه ای بگذار تا جواب بگیری.

----------


## powerboy2988

من دوباره همون کاری رو که آقای فلاح گفت تست کردم جواب گرفتم البته تو access 2003 ، نمی دونم چرا تو access 2007 کار نمی کنه . دلیلش چی می تونه باشه؟

----------


## مهدی قربانی

> تو access 2007 نمی دونم چرا نمیشه برنامه نویسی کرد. همش باید از ماکرو استفاده کنی. این کار رو هم تست کردم جواب نداد. در ضمن من 3 تا مشخصه دارم


سلام
متاسفانه نمی دونم چرا ویزارد در 2007 بجای کد نویسی از Embedded Macro استفاده می کنه البته دارم دنبال علتش می گردم ببینم چیه ولی شما می تونید از طریق Office Button و Access Option بعد در قسمت Popular ورژن 2000 یا 2003-2002 رو از کامبو Default file format انتخاب کنید تا ضمن استفاده از اکسس 2007 بتونید از ویزارد VBA‌ استفاده کنید .

----------


## powerboy2988

دیشب مشکل شو فهمیدم کجاست. این آفیسی که من ریخم از تو cd king بود ‏‌‏‏‏‏‏‏آفیسش کرکش شده بود واسه همین نمی شه توش کد نویسی کرد ‏. رفتم DVD آفیس رو گرفتم برنامه کار کرد!!

----------


## powerboy2988

> سلام
> متاسفانه نمی دونم چرا ویزارد در 2007 بجای کد نویسی از Embedded Macro استفاده می کنه البته دارم دنبال علتش می گردم ببینم چیه ولی شما می تونید از طریق Office Button و Access Option بعد در قسمت Popular ورژن 2000 یا 2003-2002 رو از کامبو Default file format انتخاب کنید تا ضمن استفاده از اکسس 2007 بتونید از ویزارد VBA‌ استفاده کنید .


من این کار رو انجام دادم ولی جواب نداد!!

----------


## مهدی قربانی

سلام
بله حق با شماست البته باید یه کار دیگه هم بکنید ، برای ایجاد فایل جدید شما اکسس رو باز کنید بعد در سمت راست پنجره اون کلید انتخاب مسیر رو کلیک کنید ضمن تعیین آدرس از کامبو Save As Type فرمت 2003-2002 رو انتخاب کنید بعد از این مراحل در بالای پنجره آیکون new رو کلیک کنید . حالا شما یک دیتابیس با فرمت 2003-2002 دارید . اگر موفق نشدید بفرمائید تا بیشتر راهنمایی کنم .

----------


## powerboy2988

همه کاریو انجام دادم . کد رو قبول نمی کنه

----------


## powerboy2988

حالا من همین کا رو تو access 2003 انجام می دم کار می کنه ‏وقتی تو database  خودم که درستش کردم از این دستورات استفاده کردم ازش error می گیره و فرم رو باز نمی کنه. یه نمونه از برنامه رو می زارم ببینید مشکلش از کجاست.

----------


## مهدی قربانی

سلام
می تونید اون نمونه ای که با 2007 ساختید رو مثل نمونه بالا اینجا بذارید .

----------


## powerboy2988

من از 2007 به 2003 , switch کردم. یه نمونه دیگه می زارم که کار می کنه. مخم دیگه کار نمی کنه  :گیج:  :گیج:

----------


## powerboy2988

مشکلو حل کردم.
مشکلم اینجا بود که در فرم family من 2تا فیلد نام و نا خانوادگی رو lookup wizard گرفتم از فرم پرسنل واسه همین از نوع number می ساخت در حالی که من به عنوان ورودی بهش text می دادم سره همین مشکل داشت!!!

----------


## powerboy2988

خب حالا اگه بخوام بر اساس 2 تا  فیلد برام جستجو کنه چیکار کنم؟
البته از این دستور استفاده کردم ولی جواب نداد!

On Error GoTo Err_Command96_Click

    Dim stDocName As String
    Dim stLinkCriteria, stLinkCriteria2 As String

    stDocName = "Form Family"
    
    stLinkCriteria = "[n1]=" & "'" & Me![name] & "'"
    stLinkCriteria2 = "[f1]=" & "'" & Me![family] & "'"
    DoCmd.OpenForm stDocName, , , stLinkCriteria
    DoCmd.OpenForm stDocName, , , stLinkCriteria2

Exit_Command96_Click:
    Exit Sub

Err_Command96_Click:
    MsgBox Err.Description
    Resume Exit_Command96_Click
البته فقط بر اساس stLinkCriteria2 عمل جستجو رو انجام می ده

----------


## powerboy2988

من این رو به این صورت تحلیل می کنم که اول میاد بر اساس stLinkCriteria عمل سرچ رو انجام میده و سپس از داده هایی که stLinkCriteria به وجود آورده میاد بر اساس stLinkCriteria2 سرچ می کنه
درسته ؟

----------


## powerboy2988

چی جوری میشه 2تا stLinkCriteria رو با هم and یا or کرد؟

----------


## Ali_Fallah

به نظر من
VB اکسس 2007 بصورت پیش فرض غیر فعال بوده (شاید بخاطر امنیتی) بنابراین تمامی فرمها و... محاسبات بدرستی عمل نمیکنند یا بهتر بگویم اصلاً عمل نمیکنند بنابراین انتخاب دکمه و نوشتن کد یا استفاده از ویزارد امری بیهوده است .
متاسفانه چون بنده در سیستمم آفیس 2007 ندارم خیلی نمیتوانم راهنمائی کنم ولی این را میدانم که در قسمت Option گزینه ای در قسمت(فکر کنم) امنیتی دارد که بایستی تیک زده و آنرا فعال کنید با فعال شدن آن تمامی کدها عمل میکنند...

----------


## powerboy2988

> به نظر من
> VB اکسس 2007 بصورت پیش فرض غیر فعال بوده (شاید بخاطر امنیتی) بنابراین تمامی فرمها و... محاسبات بدرستی عمل نمیکنند یا بهتر بگویم اصلاً عمل نمیکنند بنابراین انتخاب دکمه و نوشتن کد یا استفاده از ویزارد امری بیهوده است .
> متاسفانه چون بنده در سیستمم آفیس 2007 ندارم خیلی نمیتوانم راهنمائی کنم ولی این را میدانم که در قسمت Option گزینه ای در قسمت(فکر کنم) امنیتی دارد که بایستی تیک زده و آنرا فعال کنید با فعال شدن آن تمامی کدها عمل میکنند...


بله همچین کاری رو تست کردم ولی جواب نداد.

----------


## مهدی قربانی

دوست عزیز من الان به 2007 دسترسی ندارم شب یه نمونه ای که با ویزارد کد ساخته شده باشه براتون آپ می کنم تا برسی کنید .

----------


## powerboy2988

اگه پست قبلی ها رو خونده باشید گفتم که من switch کردم تو 2003 حالا تنها مشکلی که دارم اینکه می خوام تو کد زیر  2تا stLinkCriteria رو با هم and یا or کنه!

On Error GoTo Err_Command96_Click

    Dim stDocName As String
    Dim stLinkCriteria, stLinkCriteria2 As String

    stDocName = "Form Family"
    
    stLinkCriteria = "[n1]=" & "'" & Me![name] & "'"
    stLinkCriteria2 = "[f1]=" & "'" & Me![family] & "'"
    DoCmd.OpenForm stDocName, , , stLinkCriteria
    DoCmd.OpenForm stDocName, , , stLinkCriteria2

Exit_Command96_Click:
    Exit Sub

Err_Command96_Click:
    MsgBox Err.Description
    Resume Exit_Command96_Click

----------


## powerboy2988

کسی نیست یه راه حلی بده!!!

----------

