ورود

نسخه کامل مشاهده نسخه کامل : دستورات sql در دلفي



sara_she
06-03-2007, 10:52
با سلام
من مي خوام به نحوي از دستورات sqlاستفاده كنم كه بتونم تشخيص بدم نتيجه درستي بر مي گردونه يا نه.مثلا اگه select براي پيدا كردن يك كد پروژه خاص اگه اين كد در جدول موجود نبود پيام بده يا براي دستورinsert اگه بخواهيم كد تكراري وارد كنيم خطا بگيره . براي اين كار فكر مي كنم بايد با حلقه for جدول ركورد به ركورد چك بشه ولي نمي دونم چه طور؟

sara_she
07-03-2007, 10:14
سلام
يكي جواب منو بده .من تو asp.netاز for استفاده مي كردم و تو اين حلقه if مي گذاشتم براي چك كردن هر ركورد جدول ولي با دلفي زياد آشنا نيستم.

NoneForce
07-03-2007, 10:34
سلام
هنگامي كه مثلا براي پاك كردن چند ركورد، درج و يا به روز رساني از متد ExecSQL استفاده مي كنيد نتيجه اين دستور تعداد ركوردهاي تغيير داده شده است، كه اگر مقدار 0 بود يعني ركوردي تغيير نكرده است.
اميدوارم سوالتون را درست فهميده باشم.

sara_she
07-03-2007, 12:23
ممنون از راهنمايي تون .ولي من نمي تونم براي درج از insertاستفاده كنم چون فيلد عكس دارم و مي خوام از طريق loadfromfileاونو مقدار بدم و دوستان ميگن اين كار رو با insertنمي شه انجام داد منم از adotable.appendبراي درج استفاده مي كنموتازه براي selectكردن اگه ركورد مورد نظر يافت نشد چه طوري متوجه بشم تا به كاربر پيام بدم تو select كه execsqlبه كار نمي بريم؟نميشه راهي بگين كه با حلقه باشه چون من نياز به چك كردن ركورد ها به صورت جداگانه دارم
ممنونم

delphianddotnet
07-03-2007, 19:19
سلام
یه راهش اینه که مقدار RecordCount کوری که اجرا میکنی چک کنی اگه مقدار صفر بود هیچ رکوردی وجود نداره !

sara_she
08-03-2007, 11:04
ممنون از راهنماييتون
يه سوال كوچيك ديگه
recordcountبراي تمام دستورات sqlدرست عمل مي كنه ؟براي insert و deleteو...

sara_she
08-03-2007, 11:37
اگه از adotabel و متد append آن براي insert استفاده كنيم جواب نمي ده !!

delphianddotnet
08-03-2007, 11:43
اگه از adotabel و متد append آن براي insert استفاده كنيم جواب نمي ده !!
چطور جواب نمیده .مگه ارور میده .بیشتر توضیح بده .با این همه توضیحاتی که میدن اصلا" نمیشه متوجه منظورتون شد.
متد Append به انتهای جدول اضافه میکنه و Insert هم بین دو رکورد فعلی عمل میکنه .

sara_she
08-03-2007, 11:51
ببينيد من مي خواستم با insert به جدولم يكسري اطلاعات اضافه كنم و يكي از اين اطلاعات عكسي است كه مي خواستم با loadfromfile در دستور insert قرار بدم ولي دوستان گفتند با متد insertنمي شه loadfromfileاستفاده كرد منم مجبور شدم به جاي queryاز tabel استفاده كنم به صورت tabel1.append
tabel1imag.loadfromfile(edi1.text
تو جدولم من فيلد codeدارم كه كليد اصلي است و نبايد تكراري وارد كنيم
حالا مشكلم اينه كه مي خوام در هنگام appendشدن اگه بخواهيم ركورد تكراري وارد كنيم پيام بده. به همين واضحي‌! چيزي كه شما گفتيد براي updateوselect كه با query انجام دادم درسته.

sara_she
08-03-2007, 11:58
اگه بتونيد راهي نشونم بدين كه بشه در insertاز loadfromfileاستفاده كرد يعني به صورت زير
insert into project
(code,image)
values
(?,'''+ edit1.text +''' )
كه عكس توسط opendialogbox انتخاب مي شه و مسيرش تو يك textbox قرار ميگيره

delphianddotnet
08-03-2007, 12:06
حالا مشكلم اينه كه مي خوام در هنگام appendشدن اگه بخواهيم ركورد تكراري وارد كنيم پيام بده
سلام
چون اینجا مهمترین مسئله در طراحی بانک و سایر موارد استفاده از فیلد کلید اصلی و فیلد کلید لصلی نمیتونه تکراری باشه از دستور

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
میتونی واسه چک کردن اینکه کاربر شماره تکراری وارد نکنه رو چک کنی
باز مشکل داشتی بگو

delphianddotnet
08-03-2007, 12:11
واسه ذخیره کردن عکس فکر کنم قبلا" بحث شده !
به حر حال
اگه بخوای عکس رو تو بانک ذخیره کنی یا باید از ابزار dataaward یا همون DBImage (البته ئاسه بیت مپ) استفاده کنی
موفق باشید .

sara_she
08-03-2007, 12:47
ممنوم از راهنماييتون. اگه در مورد loadfromfile در دستور insertمنو راهنمايي كنيد خيلي از مشكلات ديگه هم برام حل ميشه .يه سوال ديگه مي خوام عكس درون جدولم رو از طريق opendialogbox عوض كنم يا به عبارت ديگه از دستور update استفاده كنم مي تونيد راهنماييم كنيد؟

sara_she
08-03-2007, 12:49
دستور updateرو چطور بايد بنويسم.در مورد عكس هم من خود عكس رو ذخيره نمي كنم بلكه آدرس اونو تو ديتابيس نگه مي دارم

NoneForce
08-03-2007, 12:57
دستور updateرو چطور بايد بنويسم.در مورد عكس هم من خود عكس رو ذخيره نمي كنم بلكه آدرس اونو تو ديتابيس نگه مي دارم

سلام
يك راه براي ذخيره عكس در بانك اكسس تعريف فيلد عكس از نوع Ole Object است.
بعد فايل عكس را در يك MemoryStream بريزيد و بعد MemoryStream را در بانك ذخيره كنيد

ذخيره :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

بازيابي :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ابتداي بحث گفتيد كه ميخواهيد عكس در بانك ذخيره كنيد، ولي الان به ذخيره نشاني فايل اشاره مي كنيد، بالاخره مي خواهد خود عكس را ذخيره كنيد يا مسير فايل را؟!!

mahdi bg
10-03-2007, 06:15
سلام
برای اینکه بفهمیم رکوردی در جدول وجود داره یا نه

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدبرای حالت Insert کد زیر رو استفاده کن


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

mahdi bg
12-03-2007, 07:13
سلام
چون می خواهین توی Database مسیر عکس رو نگه دارین نه خود عکس رو
کار زیر رو انجام بدین


openpicturedialog .execute;دستور SQL

Insert into table values (yourcode+'''+openpicturedialog.FileName+''');

برای update هم می تونی بنویسی


openpicturedialog.excute;
دستور ویرایش

Update table set
YourFieldImag: = openpicturedialog.FileName
Where code=Yourcode

امیدوارم تونسته باشم کمکت کرده باشم
اگه سوالی بود و بلد بودم در خدمتم

خیلی خوشحالم که حداقل یه نفر پیدا شد که مثل من به این که
خودشو با عکس بدبخت کنه از مسیرش استفاده می کنه

sara_she
12-03-2007, 09:41
من از بانك sql serverاستفاده مي كنم .يه سوال در مورد locate اگه به جاي edit1.text كه در كد زير است بخواهيم پارامتر بذاريم بايد چطور اونو تعريف كنيم؟
if Table1.Locate('st-id',Edit1.text,[])=true then
showmessage("find...);

sara_she
12-03-2007, 09:48
ولي من براي insert از adotable استفاده كردم و متد appendf آن در اينصورت براي چك كردن اينكه كاربر كد تكراري وارد نكنه بايد چي كار كنم.بچه ها گفتند از locate استفاده كنم ولي نمي دونم چرا جواب نمي ده .مي شه راهنماييم كنيد؟