View Full Version : سوال: ذخیره اطلاعات در SQL با اکسس
gipcenter
شنبه 21 تیر 1399, 13:24 عصر
با سلام خدمت دوستان خوب
من دیتابیس SQL server دارم و با اینترفیس اکسس کار میکنم. در اکسس به کمک لینک کردن دیتابیس رو وصل کردم به اکسس و اطلاعات راحت ذخیره و خوانده می شود و تا اینجای کار مشکلی نیست.
تنها داستان اینه که من داخل یک فرم که رکورد سورس آن به یک تیبل متصل است میخواهم یکسری اطلاعات رو در تیبل دیگری ذخیره کنم و نمیتونم.
ممنون از کمک هاتون
padide55
یک شنبه 22 تیر 1399, 07:43 صبح
سلام
با کوئری Append Query کار کنید مشکل حل میشه
اول از تیبل اولیه کوئری درست کنید . بعد ویرایش کوئری برید و نوع کوئری رو Append Query تغییر بدین . بعد در صفحه فرم باتن ایجاد کنید که کوئری رو اجرا کند .
فیلد اصلی رو با کوئری مرتبط کنید که فقط اطلاعات رذکورد مورد نظر در کوئری فراخوان بشه و به تیبل دوم ضمیمه بشه.
فایل خودتون رو کامل پاک کنید و فقط تیبل اول و دوم با چند رکورد ثبت داشته باشه و فرم مربوطه ضمیمه کنید .
کوئری رو براتون درست میکنم .
gipcenter
یک شنبه 22 تیر 1399, 10:03 صبح
سلام
با کوئری Append Query کار کنید مشکل حل میشه
اول از تیبل اولیه کوئری درست کنید . بعد ویرایش کوئری برید و نوع کوئری رو Append Query تغییر بدین . بعد در صفحه فرم باتن ایجاد کنید که کوئری رو اجرا کند .
فیلد اصلی رو با کوئری مرتبط کنید که فقط اطلاعات رذکورد مورد نظر در کوئری فراخوان بشه و به تیبل دوم ضمیمه بشه.
فایل خودتون رو کامل پاک کنید و فقط تیبل اول و دوم با چند رکورد ثبت داشته باشه و فرم مربوطه ضمیمه کنید .
کوئری رو براتون درست میکنم .
ممنون از پاسختون دوست عزیز. یک مسئله دیگه هم هست من یکسری اطلاعات دارم که توی تیبل اصلی وجود نداره . به طور مثال : تاریخ و ساعت و نام کاربری و با این روش فقط اطلاعات فیلدهای تیبل اول به تیبل دوم که همنام باشه ارسال میشود.
padide55
یک شنبه 22 تیر 1399, 10:27 صبح
ممنون از پاسختون دوست عزیز. یک مسئله دیگه هم هست من یکسری اطلاعات دارم که توی تیبل اصلی وجود نداره . به طور مثال : تاریخ و ساعت و نام کاربری و با این روش فقط اطلاعات فیلدهای تیبل اول به تیبل دوم که همنام باشه ارسال میشود.
یک جدول مشابه جدول اول ایجاد کنید
یک فرم به جدول اول ارتباط بدین و با کوئری داده مورد نظر رو به جدول جدید اپند کنید . یک کوئری قبلش اجرا کنید که جدول دوم همیشه اول خالی بشه و بعد داده جدید اپند و ضمیمه بشه بدون تاریخ و ... و کاربر و ..
البته در این جدول با ویرایش ایتمهایی که میخواهید به جدول نهایی بره را ایجاد کنید و فیلد اضاف کنید . خالی باشه .
حالا با همون باتن که کوئری اجرا شده در ادامه فرامین کد بازکردن فرم خودتونو بدین . این فرم رو به جدول دوم ارتباط بدین .
پس از ثبت تاریخ و .... دکمه ذخیره میتونه کوئری سومی رو فراخواتن کنه که داده های جدول دوم رو به جدول نهایی ببره .
جدول 1
نام . نام خانوادگی. کد پرسنلی
جدول 2 خالی
جدول 1 مثلا کدپرسنلی 123 کپی به جدول 2
جدول 2
نام . نام خانوادگی. کد پرسنلی . تاریخ خالی ساعت خالی کاربر خالی ( این جدول به فرمتون وصل کنید) . توسط این فرم فیلدهای جدول 2 پر میشه
جدول نهایی خودتون ( از طریق فرم یک کوئری میتونه جدول 2 رو به این جدول انتقال بده )
نام . نام خانوادگی. کد پرسنلی . تاریخ تکمیل شده . ساعت تکمیل شده . کاربر تکمیل شده
باز هم درخدمتم .
نمونه خواستید بگید بگذارم
padide55
یک شنبه 22 تیر 1399, 10:54 صبح
یک جدول مشابه جدول اول ایجاد کنید
یک فرم به جدول اول ارتباط بدین و با کوئری داده مورد نظر رو به جدول جدید اپند کنید . یک کوئری قبلش اجرا کنید که جدول دوم همیشه اول خالی بشه و بعد داده جدید اپند و ضمیمه بشه بدون تاریخ و ... و کاربر و ..
البته در این جدول با ویرایش ایتمهایی که میخواهید به جدول نهایی بره را ایجاد کنید و فیلد اضاف کنید . خالی باشه .
حالا با همون باتن که کوئری اجرا شده در ادامه فرامین کد بازکردن فرم خودتونو بدین . این فرم رو به جدول دوم ارتباط بدین .
پس از ثبت تاریخ و .... دکمه ذخیره میتونه کوئری سومی رو فراخواتن کنه که داده های جدول دوم رو به جدول نهایی ببره .
جدول 1
نام . نام خانوادگی. کد پرسنلی
جدول 2 خالی
جدول 1 مثلا کدپرسنلی 123 کپی به جدول 2
جدول 2
نام . نام خانوادگی. کد پرسنلی . تاریخ خالی ساعت خالی کاربر خالی ( این جدول به فرمتون وصل کنید) . توسط این فرم فیلدهای جدول 2 پر میشه
جدول نهایی خودتون ( از طریق فرم یک کوئری میتونه جدول 2 رو به این جدول انتقال بده )
نام . نام خانوادگی. کد پرسنلی . تاریخ تکمیل شده . ساعت تکمیل شده . کاربر تکمیل شده
باز هم درخدمتم .
نمونه خواستید بگید بگذارم
این هم فایل نمونه براتون گذاشتم . کاملا واضح هست
gipcenter
یک شنبه 22 تیر 1399, 11:15 صبح
این هم فایل نمونه براتون گذاشتم . کاملا واضح هست
واااای شما چقدر خوبی که انقدر سریع پاسخ دادین.
یک مسئله هست که کوئری اجرا نمیشه و خطا میده هم تو برنامه خودم و هم روی تست شما
151919
ولی واقعا چقدر جالب شد این تست شما با تمام پیچیدگی که داره
padide55
یک شنبه 22 تیر 1399, 11:21 صبح
اکشن کوئری را غیرفعال کنید
option-clientsetting
151920
gipcenter
سه شنبه 24 تیر 1399, 13:11 عصر
آقا من نتونستم کار رو تموم کنم
پیغام خطا های زیر رو میده
151931
151932
رو هر کدوم از کوئری ها میزنم این خطا هارو میده
با vba راحت تر نمیشه این کار رو انجام داد؟:ناراحت::ناراحت::ناراحت: :ناراحت:
padide55
سه شنبه 24 تیر 1399, 13:19 عصر
سلام مجدد.
کوئری برای اجرا پیغام تایید میخواد .
اگر اکشن کوئری رو غیر فعال کنید این پیغام نمیاد .
راهنمای مسیر غیرفعال کردنش رو فرستادم .قبلا.
برید تیک اکشن کوئری رو بردارید .
option
client setting
action query
با بیسک کار میکنید فرمتون رو به تیبل مقصد مرتبط کنید و با Vlookup از تیبل اصلی مشخصات رو فراخون کنید .
این روش که براتون گذاشتم هرچند پیچیده هست ولی کاملا قابل فهمه و اینکه کلا توسط خود اکسس بدون کد دیگه اجرا میشه .
gipcenter
سه شنبه 24 تیر 1399, 13:38 عصر
سلام مجدد.
کوئری برای اجرا پیغام تایید میخواد .
اگر اکشن کوئری رو غیر فعال کنید این پیغام نمیاد .
راهنمای مسیر غیرفعال کردنش رو فرستادم .قبلا.
برید تیک اکشن کوئری رو بردارید .
option
client setting
action query
با بیسک کار میکنید فرمتون رو به تیبل مقصد مرتبط کنید و با Vlookup از تیبل اصلی مشخصات رو فراخون کنید .
این روش که براتون گذاشتم هرچند پیچیده هست ولی کاملا قابل فهمه و اینکه کلا توسط خود اکسس بدون کد دیگه اجرا میشه .
آره درسته .
من فکر کردم برای فایل شما برداشتم کلا برای همه برداشته شده
یک سوال دیگه اینکه وقتی کوئری میخواد اجرا کنه کل تیبل رو انتقال میده به تیبل دوم . 470 رکورد اونجا هم ثبت میشه.این چه راهکاری داره فقط همون اطلاعات فرم موجود رو انتقال بده نه همه رکورد هارو
gipcenter
سه شنبه 24 تیر 1399, 13:40 عصر
یک موضوع دیگه با اینکه 470 رکورد رو تو تیبل دوم انتقال داده ولی با اینحال تو فرم دوم هیچی نشون نمیده و میگه 0 رکورد وجود دارد :افسرده:
padide55
سه شنبه 24 تیر 1399, 13:42 عصر
بر چه اساسی بیاره که فقط یک مورد بیاره . کد پرسنلی -کد ملی - کد دستگاه - کد کالا و یا همچین چیزی که فقط بر اساس همون سرچ کنه و یک رکورد رو بیاره ؟
فایل نمونه رو ببینید . فقط یکی رو میاره چون محدوده تعیین کردم برای کد پرسنلی .
قبلا چکار میکردین که یکی توی فرمتون دیده بشه ؟
gipcenter
سه شنبه 24 تیر 1399, 13:44 عصر
بر چه اساسی بیاره که فقط یک مورد بیاره . کد پرسنلی -کد ملی - کد دستگاه - کد کالا و یا همچین چیزی که فقط بر اساس همون سرچ کنه و یک رکورد رو بیاره ؟
من یک گزارش دارم که توش تعدادی از این 470 رکورد رو نشون میده و قتی روی شماره کد مثلا پرسنلی کلیک میکنه اطلاعات همون رکورد رو توی یک فرم نشون میده و من دکمه ثبت رو تو همون صفحه گذاشتم ولی میاد کل رکورد هارو تو تیبل دوم ثبت میکنه بجای اینکه فقط همون رکورد رو ثبت کنه
امیدوارم درست رسونده باشم
padide55
سه شنبه 24 تیر 1399, 13:49 عصر
کوئری که درست کردین رو ویرایش کنید .Design view
این کد رو در فیلد مربوطه بنویسید . در سطر Criteria
[enter code ...]
اونوقت کوئری رو اجرا کنید . ببینید چند تا منتقل میکنه
gipcenter
سه شنبه 24 تیر 1399, 14:33 عصر
از طریف
[forms]![formname]![code]
تونستم درستش کنم و یک مرحله جلو رفت ولی اطلاعات رو توی فرم بعدی نشون نمیده نه اطلاعات نه تکس باکس هارو.
padide55
سه شنبه 24 تیر 1399, 15:06 عصر
از طریف
[forms]![formname]![code]
تونستم درستش کنم و یک مرحله جلو رفت ولی اطلاعات رو توی فرم بعدی نشون نمیده نه اطلاعات نه تکس باکس هارو.
فرمتون رو به جدول دوم ربط بدین .
تنظیمات فرم .
ادیشن فرم رو ببندین .
دیتا انتری. no
با عرض پوزش
این کار قابل انجامه .فقط نکته زیاد داره .
gipcenter
چهارشنبه 25 تیر 1399, 10:59 صبح
بسیار پیچیده و بسیار جالب هستش .دست شما درد نکنه که انقدر خوب و با حوصله پاسخگو هستین.
padide55
چهارشنبه 25 تیر 1399, 11:45 صبح
بسیار پیچیده و بسیار جالب هستش .دست شما درد نکنه که انقدر خوب و با حوصله پاسخگو هستین.
موفق شدین ؟
gipcenter
سه شنبه 31 تیر 1399, 14:09 عصر
بسیار سپاسگزارم
بله موفق شدم که ذخیره بکنم و مراحل پیش بره. باز هم ممنونم بسیار جالب بود.
حالا مشکل بعدی که دارم توی نوع نمایش هست . که یکم باید باهاش سر کله بزنم تابتونم بازگو کنم و از کمکتون استفاده کنم و مورد لطفتون مجدد قرار بگیرم
الان دوتا تیبل دارم که تو یکیش اطلاعات اصلی است و یکی هم اطلاعات تغییر وضعیت .حالا گزارشی میخوام بسازم که بر اساس آخرین وضعیتی که تو تیبل دوم ایجاد شده را در لیست یک کاربر نمایش بدم ولی وضعیت های قبلی رو نمایش نده
که حالا باید یک دمو درست کنم فکر کنم تا بتونم بگم چی میخوام
padide55
چهارشنبه 01 مرداد 1399, 08:45 صبح
بسیار سپاسگزارم
بله موفق شدم که ذخیره بکنم و مراحل پیش بره. باز هم ممنونم بسیار جالب بود.
حالا مشکل بعدی که دارم توی نوع نمایش هست . که یکم باید باهاش سر کله بزنم تابتونم بازگو کنم و از کمکتون استفاده کنم و مورد لطفتون مجدد قرار بگیرم
الان دوتا تیبل دارم که تو یکیش اطلاعات اصلی است و یکی هم اطلاعات تغییر وضعیت .حالا گزارشی میخوام بسازم که بر اساس آخرین وضعیتی که تو تیبل دوم ایجاد شده را در لیست یک کاربر نمایش بدم ولی وضعیت های قبلی رو نمایش نده
که حالا باید یک دمو درست کنم فکر کنم تا بتونم بگم چی میخوام
سلام
کوئری ایجاد کنید که داده های مورد نظر از همون پرسنل رو کامل نشون بده (همه رو) ولی ترتیب نمایش فیلد مورد نظر( بر اساس تاریخ ثبت و یا id جدول ) در کوئری رو desending قرار بدین . , و لیست رو مشاهده کنید .
حالا برای اینکه فقط اولین مورد نمایش داده بشه ( چون Dessending هست ) اولین مورد در لیست میشه اخرین مورد ثبت شده .(اکی )
در اکسس کوئری دیزاین وارد محیط SQL دیزاین بشین دستور Select رو تبدیل کنید به select top 1
در اینصورت از لیست کوئری اولین نمایش داده میشه
gipcenter
یک شنبه 05 مرداد 1399, 13:43 عصر
ممنون از لطف و راهنماییتون .
اون کارهایی که گفتین تو پست قبلی انجام دادم و کوئری رو مطابق توضیحات شما تغییر دادم. جدول من شبیه جدول زیر هستش. و مسئله ای که هست من بر اساس شماره های nocard میخوام به طور مثال مواردی که وضعیت اونها tarh هستش و آخرین گزینه تغییرات می باشد رو ببینم. دلیل این کار هم اینه که وضعیت یکسره در حال تغییر هست و غیر از اینکه لازم هست آخرین تغییرات دیده بشه لازم هست تاریخ و کاربری را هم که تغییر داده رو ببینم.به طور مثال در جدول پایین کد 1521 آخرین وضعیت komesion هست و توی طرح دیده نشود و کد 1527 آخرین وضعیت tarh هست و دیده بشود . بعضی ها هم تغییر نداشته و وضعیت آنها tarh هستش:خجالت: با سپاس فرآوان
ID
nocard
time
date
vazeeyat
vazeeyat2
username
7
1521
11:20
1399/05/02
تهیه طرح و پروژه
tarh
test1
8
1521
12:20
1399/05/02
تایید کمیسیون
komesion
test2
9
1523
13:20
1399/05/02
تهیه طرح و پروژه
tarh
test1
10
1524
14:20
1399/05/02
تایید کمیسیون
komesion
test2
11
1525
15:20
1399/05/02
فاقد اقدام
faghed
test1
12
1526
16:20
1399/05/02
تهیه طرح و پروژه
tarh
test1
13
1527
11:20
1399/05/02
اجرا
ejra
test1
14
1526
18:20
1399/05/02
اجرا
ejra
test2
15
1529
19:20
1399/05/02
اجرا
ejra
test1
16
1527
20:20
1399/05/02
تهیه طرح و پروژه
tarh
test2
17
1531
21:20
1399/05/02
فاقد اقدام
faghed
test1
18
1532
11:20
1399/05/02
اجرا
ejra
test1
19
1533
23:20
1399/05/02
فاقد اقدام
faghed
test1
20
1534
00:20
1399/05/02
اجرا
ejra
test1
21
1535
01:20
1399/05/02
فاقد اقدام
faghed
test1
22
1536
02:20
1399/05/02
تایید کمیسیون
komesion
test2
23
1537
03:20
1399/05/02
اجرا
ejra
test1
24
1538
04:20
1399/05/02
تهیه طرح و پروژه
tarh
test2
padide55
یک شنبه 05 مرداد 1399, 17:54 عصر
کدتون رو با
forms]![formname]![code
فراخوان کنید .
بعدش ترتیب بر اساس id
dessending باشه
اخرین مورد میاد بالای لیست.
نهایتا همون کاری که پست قبل گفتم
padide55
دوشنبه 06 مرداد 1399, 07:47 صبح
کدتون رو با
forms]![formname]![code
فراخوان کنید .
بعدش ترتیب بر اساس id
dessending باشه
اخرین مورد میاد بالای لیست.
نهایتا همون کاری که پست قبل گفتم
نمونه فایل میگذارم شاید مشکل رفع بشه
آخرین مورد براساس تاریخ و ساعت خواستید همینجا ترتیب نمایش رو اصلاح کنید.
gipcenter
سه شنبه 07 مرداد 1399, 12:47 عصر
بسیار نمونه خوبی بود ولی موردی که من مدنظرم هستش اینه که vazeeyat2 رو هرچی انتخاب میکنم لیست آخرین تغییرات رو بیاره
به طور مثال از لیست بالا اگر tarh رو انتخاب کردم لیست زیر رو نشون بده
9
1523
1:20 PM
1399/05/02
تهیه طرح و پروژه
tarh
test1
16
1527
8:20 PM
1399/05/02
تهیه طرح و پروژه
tarh
test2
24
1538
4:20 AM
1399/05/02
تهیه طرح و پروژه
tarh
test2
و تو فرم اصلیم برای باز کردن این ریپورت من کد vba زیر رو نوشتم
DoCmd.OpenReport "repfrmflow_kartabl", acViewReport, "", " vazeeyat2 like 'tarh' ", acNormal
padide55
سه شنبه 07 مرداد 1399, 13:13 عصر
با سلام مجدد
نوع پرس و جوی کوئری رو تغییر بدین .
gipcenter
دوشنبه 20 مرداد 1399, 06:24 صبح
با سلام مجدد
نوع پرس و جوی کوئری رو تغییر بدین .
آقا من یکم گیج شدم و نمیتونم جواب درست بگیرم
الان تو این گزارش هر وضعیت رو انتخواب میکنی نشون میده ولی شماره کارت تکراری هم نشون میده که تکراری ها فقط جدیدترین وضعیت رو باید نمایش بده :اشتباه::ناراحت::ناراحت::نار حت:
padide55
دوشنبه 20 مرداد 1399, 07:24 صبح
آقا من یکم گیج شدم و نمیتونم جواب درست بگیرم
الان تو این گزارش هر وضعیت رو انتخواب میکنی نشون میده ولی شماره کارت تکراری هم نشون میده که تکراری ها فقط جدیدترین وضعیت رو باید نمایش بده :اشتباه::ناراحت::ناراحت::نار حت:
سلام
الان گزارش وضعیت درسته ولی متوجه تکراری بودن نشدم .
مگه توی یک وضعیت تکراری هم ثبت دارید ؟
مثلا Tarh شماره کارت تکراری ندیدم توی فایل نمونه خودتون .
ممکنه tarh یک کارت دوبار باشه ?
توضیح متوجه نشدم ....
gipcenter
دوشنبه 20 مرداد 1399, 07:55 صبح
سلام
الان گزارش وضعیت درسته ولی متوجه تکراری بودن نشدم .
مگه توی یک وضعیت تکراری هم ثبت دارید ؟
مثلا Tarh شماره کارت تکراری ندیدم توی فایل نمونه خودتون .
ممکنه tarh یک کارت دوبار باشه ?
توضیح متوجه نشدم ....
آره دوست عزیز. وضعیت برای هر کسی قابل تغییر است و ممکنه برای یک نفر 10 بار وضعیت عوض بشه ولی تو گزارش آخرین وضعیت های هر فرد رو میخوام نشون بده . تو نمونه خودم هم تکراری داره.
ممنون از راهنماییهاتون
padide55
دوشنبه 20 مرداد 1399, 08:38 صبح
آره دوست عزیز. وضعیت برای هر کسی قابل تغییر است و ممکنه برای یک نفر 10 بار وضعیت عوض بشه ولی تو گزارش آخرین وضعیت های هر فرد رو میخوام نشون بده . تو نمونه خودم هم تکراری داره.
ممنون از راهنماییهاتون
نمونه جدید
هر وضعیت
اخرین وضعیت هر کارت رو نشون میده
اگر اکی نبود یک فایل بفرستید که چند رکورد تکراری داشته باشه .
gipcenter
سه شنبه 28 مرداد 1399, 12:31 عصر
:گریه:
من گیر کردم نمیدونم چکار کنم
فایل نمونه هم کماکان یک شماره کارت توی وضعیت های مختلف تکرار میشه. الان توی همین sample5 شماره کارت 1521 هم توی وضعیت طرح دیده میشه و هم تو وضعیت کمیسیون. در صورتی که با توجه به تاریخ و ساعت باید فقط تو وضعیت تهیه طرح و پروژه نشون بده
padide55
چهارشنبه 29 مرداد 1399, 07:24 صبح
:گریه:
من گیر کردم نمیدونم چکار کنم
فایل نمونه هم کماکان یک شماره کارت توی وضعیت های مختلف تکرار میشه. الان توی همین sample5 شماره کارت 1521 هم توی وضعیت طرح دیده میشه و هم تو وضعیت کمیسیون. در صورتی که با توجه به تاریخ و ساعت باید فقط تو وضعیت تهیه طرح و پروژه نشون بده
نوع جستجوی خودتون رو مشخص ک واعلام کنید ؟
الف : کد رو بزنیم و براساس تاریخ و ساعت ، فقط اخرین وضعیت رو ببینیم؟ ... میخواین ببینین فلان نفر با کد 1521 الان داخل چه وضعیتیه ...
ب: وضعیت رو بزنیم و اخرین کدهایی که اون وضعیت رو داشتن رو ببینیم ؟ در این صورت ممکنه کدی در وضعیت بالاتری هم باشه و نشون بده که چه تاریخی در این وضعیت قرار داشته .
توجه : ترتیب اولویت وضعیتها روهم بدین .
میخواین ببینین چه افرادی در اولویت وضعیت خاصی بالاتر نرفتن ؟
هدف ؟
gipcenter
چهارشنبه 29 مرداد 1399, 11:31 صبح
مرسی که هستی :لبخندساده:
اولویت نیست وضعیت هستش و افراد وضعیتشون تغییر میکنه و من فقط میخوام به طور مثال وضعیت طرح رو انتخاب میکنم بر اساس تاریخ آخرین انتخاب وضعیت لیست افراد رو نمایش بده و در وضعیت های دیگه اون فرد رو نشون نده چون در آخرین ساعت و تاریخ ثبت شده طرح می باشد.
padide55
یک شنبه 02 شهریور 1399, 13:11 عصر
نمونه جهت اخرین وضعیت هر فرد بر اساس تاریخ و ساعت
برای اینکه ببینید در کدام مرحله چه کدهایی هستند بهتر است اخرین وضعیت فعال هر کد با YES/NO
مشخص شوند.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.