با سلام و احترام به شما دوست عزيز متاسفانه در اين قسمت اين امكان وجود ندارد. locate و sql دو مقوله كاملا جدا هستند.نقل قول:
Printable View
با سلام و احترام به شما دوست عزيز متاسفانه در اين قسمت اين امكان وجود ندارد. locate و sql دو مقوله كاملا جدا هستند.نقل قول:
بسيار زياد! join رو جستجو كنيدنقل قول:
تا حالا شده نیاز باشه از دو تا Table استفاده کنید ؟ مخصوصا لازم باشه که این 2 تا Table با هم در ارتباط باشند.
شخصي كه ازش سوال پرسيدين جواب جالبي نداده ها!نقل قول:
اگه از هر کسی بپرسن چطوری این 2 تا جدول رو به هم مرتبط می کنی ؟
در جواب میگه : شماره رکورد جدول اول رو تو یه فیلد در جدول دوم ذخیره مینکم
در جدول اول فيلدي رو اضافه كنيد كه يه شمارنده باشه و اتوماتيك افزايش پيدا كنهنقل قول:
راه حل خوب برای حل این مشکل چیه ؟
در جدول دوم اين شماره رو ذخيره كنيد. شماره ركورد اصلا راه حل مناسبي نيست
اگر ادامه سوالات هم به موضوع اين تاپيك مربوط نميشه لطفا در جاي ديگري مطرح كنيد، من يا ديگر دوستانم جواب خواهيم داد
موفق باشيد
فرهاد جان سلام خسته نباشید سؤالاتی داشتم خواهشمندم جواب دهید
1- در درسهای ارائه شده در خصوص SQL در قسمتی ذکر نمودید در هنگام استفاده از Insert یا Update یا delete بهتر است بجای ADOQuery از ADOCommand استفاده شود علت چیست ؟
2- در خصوص restore database من بعضی وقتها چه از طریق کد نویسی و چه از طریق خود SQL از این دستور استفاده میکنم با پیغام خطای ذیل مواجه میشوم . چگونه میشود آن را حل نمود ؟ وقتی در داخل برنامه و هنگامی که فایل باز است میخواهیم این دستور را اجرا نماییم آیا امکان پذیر است ؟
Exclusive access could not be obtained because the database is in use
RESTORE DATABASE is terminating abnormally
سلام
به نقل از codegear:نقل قول:
1- در درسهای ارائه شده در خصوص SQL در قسمتی ذکر نمودید در هنگام استفاده از Insert یا Update یا delete بهتر است بجای ADOQuery از ADOCommand استفاده شود علت چیست ؟
به بيان ساده تر و خلاصه تر براي زماني كه recordsetي توسط دستورات بازگردنده نميشه، بهتره كه از adocommand استفاده كنيدنقل قول:
At times I have used a TADOQuery to execute SQL that does not return data, such as running an Update SQL command. If you end up doing this rather than using a TADOCommand, please set Property ExecuteOptions.eoExecuteNoRecords to True first.
If this is allowed to be False, a Recordset is built in the background which is "costly" and not required. You only need the Recordset when you are returning data. The effect of this setting is most noticeable (I have had improvements approaching ten-fold) when performing updates that apply to many rows, but really this setting should be set to True for any Update, Insert, or Delete SQL.
Of course you can avoid this altogether by using a TADOCommand instead of a TADOQuery.
از پيغام خطا مشخصه كه چون در حال استفاده از ديتابيس هستيد نميتونيد جايگزينش كنيد. يك adoconnection ديگه روي فرم بذاريد و به ديتابيس master متصل كنيد و بعد restore كنيد. ضمن اينكه adoconnection مربوط به ديتابيس مورد نظر رو غير فعال كنيدنقل قول:
2- در خصوص restore database من بعضی وقتها چه از طریق کد نویسی و چه از طریق خود SQL از این دستور استفاده میکنم با پیغام خطای ذیل مواجه میشوم . چگونه میشود آن را حل نمود ؟ وقتی در داخل برنامه و هنگامی که فایل باز است میخواهیم این دستور را اجرا نماییم آیا امکان پذیر است ؟
Exclusive access could not be obtained because the database is in use
RESTORE DATABASE is terminating abnormally
با سلام خدمت شما از اینکه وقت میگذارید و به سؤالات اینجانب پاسخ میدهید خیلی متشکرم . دو سؤال داشتم اگر مقدور است پلسخ دهید
1- چگونه میشود مانند دستور row_naumber در sql2005 در sql2000 نیز استفاده کرد؟
2- من اطلاعات خود را در سالهای مختلف ذخیره میکنم و برای نمایش کلیه اطلاعات مربوط به یک فیلد خاص در این سالها از یک حلقه for و دستور union all استفاده میکنم . اگر سالها پشت سر هم باشند مشکلی ندارم ولی اگر در این حلقه یک سال موجود نباشد با خطای invalid object name mytable مواجه میشوم . حال سؤال من اینست که آیا میشود در ضمن عملیات حلقه و عدم وجود بانک مربوط به یک سال از این خطا عبور کرد یا بایستی قبل از ورود به حلقه ، بانکهای سالها چک شوند تا از موجود بودن آنها مطمئن شوم؟
اطلاع ندارم. شکل دستور رو بنویسیدنقل قول:
1- چگونه میشود مانند دستور row_naumber در sql2005 در sql2000 نیز استفاده کرد؟
بله. با دستور زیر از وجود جداول مطمئن بشید:نقل قول:
2- من اطلاعات خود را در سالهای مختلف ذخیره میکنم و برای نمایش کلیه اطلاعات مربوط به یک فیلد خاص در این سالها از یک حلقه for و دستور union all استفاده میکنم . اگر سالها پشت سر هم باشند مشکلی ندارم ولی اگر در این حلقه یک سال موجود نباشد با خطای invalid object name mytable مواجه میشوم . حال سؤال من اینست که آیا میشود در ضمن عملیات حلقه و عدم وجود بانک مربوط به یک سال از این خطا عبور کرد یا بایستی قبل از ورود به حلقه ، بانکهای سالها چک شوند تا از موجود بودن آنها مطمئن شوم؟
کد:EXEC SP_Tables
فرهاد جان سلام از اینکه زیاد سؤال میکنم معذرت می خواهم . بذار به پای مبتدی بودنم .
تا آنجا که من فهمیدم دستور EXEC SP_Tables کلیه table های database را نشان میدهد اما من می خواهم در حلقه اگر table موجود نبود دستور select اجرا نشود مانند استفاده از شرط if
با تشکر
شما یک query با این دستور بگیرید. بعد برای اجرای select یک if بنویسید که اگر نام جدول مورد نظر شما در رکوردهای یافته شده توسط query بود، دستور select هم اجرا بشهنقل قول:
سلام فرهاد جان خسته نباشید
من در database خود بعنوان مثال دو table به نامهای tab1 و tab2 دارم . از database خود backup میگیرم در هنگام restore کردن چگونه میشود فقط یکی از این table ها مثلأ tab1 را restore کرد و table دیگر مثلأ tab2 بدون تغییر بماند
شما زماني كه از تمام ديتابيس backup ميگيريد طبيعتا تمام جدول ها رو هم شامل ميشه. براي كار شما فكر ميكنم بهتره قبل از restore كردن محتويات جدولي رو كه قرار هست بدون تغيير بمونه در شيئي مانند clientdataset بريزيد و پس از restore ركوردها رو باز نويسي كنيد. اين راه حلي هست كه به ذهن من رسيد (لطفا اين سوالات رو در تاپيك هاي ديگر مطرح كنيد)نقل قول: