دستورات sql رو در چند خط اضافه کن (sql.add رو چند بار پشت سر هم اضافه کن)نقل قول:
Printable View
دستورات sql رو در چند خط اضافه کن (sql.add رو چند بار پشت سر هم اضافه کن)نقل قول:
پیش پا افتاده که چه عرض کنم. گیج کننده بود. 5 بار خوندمش!نقل قول:
بهترین گزینه برای کار شما میتونه SP (stored proc) باشه اما از اونجا که در این مورد صحبتی نشده بهتره دو دستور sql رو در قسمتی که رشته مشخص میشه بنویسید، و بعد از چک کردن شرط query مناسب رو اجرا کنید
اگر هم قراره با خود دستورات sql چک کردن رو انجام بدید باید از IS NULL استفاده کنید که قبلا توضیح دادم
موفق باشید
سلام. مرسي از جوابت. البته من كه متوجه نشدم با اينحال چندين بار تست كردم. اگه منظورت اينه كه بقيه فيلدهارو تو select بعدي وارد كنم به اينصورت:نقل قول:
دستورات sql رو در چند خط اضافه کن (sql.add رو چند بار پشت سر هم اضافه کن)
اين كد هم error داد. البته error قبلي از بين رفت اين يكي مربوط به اديت هستش. حالا Run ميشه ولي وقتي توي اديت يه كليد رو فشار ميدم error ميده. من دقيقا متوجه نشدم كه قسمت like '+edit.text رو تو كدوم select وارد كنم. توي هر دو هم كه باشه بازم پيغام خطا ميده.کد:DataModule25.ADOQueryP.SQL.Add('select pardakht.* , honarju.hname, honarju.hfamily, honarju.hnamepedar,honarju.hshahriye, reshte.namereshte from reshte, pardakht,honarju where honarju.hcodemelli=pardakht.codehonarju and reshte.codereshte=honarju.codereshte ');
DataModule25.ADOQueryP.SQL.Add('select dore.namedore from dore where dore.codedore=pardakht.codedore and codehonarju like "'+Edit1.Text+'%"' );
آقا فرهاد ميشه هموني كه ميگي رو به صورت يه كد فرضي برام بنويسي. (دو تا select پشت سر هم رو) اگه نميگي عادت به هلوي پوست كنده دارم! مي خوام جاهاش رو بدونم كجاست. همون توضيحش رو هم بدي خوبه.
ممنونم از پاسخهايي كه ميدي. ولي پاسخهات خيلي مختصره. به خودت نگاه نكن كه كار كردن با اين دستورا ديگه برات مثل آب خوردن هستش. يه جوري جواب بده كه من خنگ هم متوجه بشم آخه.
زنده باشيد.
نه، منظورم این نبود. به صورت زیر بنویس:نقل قول:
اگه منظورت اينه كه بقيه فيلدهارو تو select بعدي وارد كنم
کد:DataModule25.ADOQueryP.SQL.Add('select pardakht.* , honarju.hname, honarju.hfamily, honarju.hnamepedar,honarju.hshahriye, reshte.namereshte from reshte, pardakht,honarju where honarju.hcodemelli=pardakht.codehonarju and reshte.codereshte=honarju.codereshte ');
به صورت زیر بنویس:
DataModule25.ADOQueryP.SQL.Add('select pardakht.* , honarju.hname, honarju.hfamily, honarju.hnamepedar,honarju.hshahriye, reshte.namereshte');
DataModule25.ADOQueryP.SQL.Add(' from reshte, pardakht,honarju');
DataModule25.ADOQueryP.SQL.Add(' where honarju.hcodemelli=pardakht.codehonarju and reshte.codereshte=honarju.codereshte');
error رو بنویسنقل قول:
وقتي توي اديت يه كليد رو فشار ميدم error ميده
پیشنهاد: اگر مایل به پیشرفت هستی هیچ وقت فکر نکن چیزی کمتر از دیگران داری. هیچ کس از روز اول برنامه نویس به دنیا نیومدهنقل قول:
يه جوري جواب بده كه من خنگ هم متوجه بشم آخه
موفق باشی
سلام
با اجازه آقا فرهاد گل
من دلفی دم دست ندارمم چون فعلا تهران نیستم ولی این کد دقیقا همون کاری رو می کنه که شما می خواین
من تو Sqlserver امتحانش کردم کاملا درست جواب میده دیگه وارد کردنش تو دلفی کار خیلی راحتی هستش
باز اگر مشکل بود بگید تا با دوستان راهنمایی تون کنیم
کد:SELECT H.name, H.Lname, R.name_reshte, N.name_khat, D.Name_dore
FROM Honarjo H INNER JOIN
Reshte R ON H.Code_reshte = R.Code_reshte LEFT OUTER JOIN
noe_khat N ON R.Code_reshte = N.Code_reshte AND R.name_reshte = 'khosh' LEFT OUTER JOIN
Dore D ON R.Code_reshte = D.Code_reshte AND R.name_reshte = 'khosh'
فرهاد جان و DrXoX عزيز، ممنونم از زحمات شما. خيلي لطف كرديد.
فرهاد جان مرسي. درست شد. من اشتباه متوجه شده بودم.نقل قول:
نه، منظورم این نبود. به صورت زیر بنویس:
کد:
DataModule25.ADOQueryP.SQL.Add('select pardakht.* , honarju.hname, honarju.hfamily, honarju.hnamepedar,honarju.hshahriye, reshte.namereshte from reshte, pardakht,honarju where honarju.hcodemelli=pardakht.codehonarju and reshte.codereshte=honarju.codereshte ');به صورت زیر بنویس:DataModule25.ADOQueryP.SQL.Add('select pardakht.* , honarju.hname, honarju.hfamily, honarju.hnamepedar,honarju.hshahriye, reshte.namereshte');DataModule25.ADOQueryP.SQL.Add (' from reshte, pardakht,honarju');DataModule25.ADOQueryP.SQL.Add( ' where honarju.hcodemelli=pardakht.codehonarju and reshte.
DrXoX جان كدي كه گفتي رو نوشتم ولي syntax error ميده تو اين قسمت:
من فكر كردم بايد قبل از LEFT OUTER JOIN دوباره بهش بگم با جدول رشته واسه همين قبلش and reshte هم اضافه كردم ولي تاثيري نداشت بازم همين error رو ميده.نقل قول:
H.Code_reshte = R.Code_reshte LEFT OUTER JOIN
noe_khat N ON R.Code_reshte = N.Code_reshte
ببخشيد تو رو خدا.
ممنونم. زنده باشيد.
مشکل حل شد؟نقل قول:
خوب انشاا... پروژت زودتر تموم بشه باز اگر مشکلی بود بپرس تا با دوستان راهنمایی تون کنیم
موفق باشید
براي دومين بار...نقل قول:
بازم همين error رو ميده
نقل قول:
error رو بنویس
سلام
نقل قول:
error رو بنویس
کد:Syntax error (missing operator) in query experssion
'H.code_reshte= R.Code_reshte LEFT OUTER JOIN noe_khat N ON R.Code_reshte = N.Code_reshte'
زنده باشيد.
به صورت زير اصلاح كن:
کد:'H.code_reshte= R.Code_reshte LEFT JOIN noe_khat ON R.Code_reshte = N.Code_reshte'
سلام
آقا فرهاد عزیز سوالی دارم که ممنون می شم راهنمایی بفرمایین
من دو تا جدول دارم . میخواهم اطلاعات موجود در جدول اول رو به جدول دوم بریزم . اما بشرطی که رکورد های انتقالی در جدول دوم از قبل وجود نداشته باشه و اگه یکیش موجود بود از اون صرف نظر کنه و بقیه رو وارد کنه .
جدول اول فیلد شماره سرویس داره که بصورت Primary Key هستش. جدول دوم همین فیلد رو داره اما بهمراه Date که اونم PrimaryKey دوم هست .
طریقه استفاده از دستور Insert Into رو استفاده کردم اما از عهدش بر نیومدم
ممنون و منتظرم
سلام خوبی
من میخواستم بین چند کامپیوتر اطلاعات ارسال کنم که بچه ها گفتند باید Sql server نصب کنی من این کارو کردم ولی نمیدونم چه طوری یک فایل sql server بسازم یعنی پسوندش mdf باشه من تا حالا فقط با access کار کردم میشه راهنماییم کنید مرسی:46:
اگر فرض كنيم كه فيلد no در هر دو جدول كليد باشه:نقل قول:
كد رو تست نكردم. اگر error داد با پرانتز گذاري حل ميشهکد:insert into table2 ( no, field ) select table1.no, table1.field2 from table1 where table1.no<>table2.no
اين سوال مربوط به اينجا نيست و با عرض پوزش جواب داده نميشهنقل قول:
به کل پاک شد
سلام مجدد .نقل قول:
آقا فرهاد کد رو به شکل زیر نوشتم(داخل یک Query )
[PHP]
Insert Into TableMainData(ServiceCode,ServiceName) Select TableServicesData.ServiceCode,TableServicesData.Se rviceName From TableServicesData where TableServicesData.ServiceCode<>TableMainData.Servi ceCode
[/PHP]
اما ارور زیر رو میده؟
[PHP]
Parameter TableMainData.ServiceCode has no default value.
[/PHP]
چیکارش کنم؟(در جدول مقصد ServiceCode , RegDate هر دو کلید هستند و در جدول مبدا ServiceCode کلید است.)
اگر مقدار servicecode بابر با NULL نيست و همچنين مقدار default رو براي اون فيلد مشخص كردي و با اين error مواجه شدي يك نسخه از ديتابيس رو كه شامل اين دو جدول هست برام آپ كن (با access)
سلام مجددنقل قول:
آقا فرهاد بانک access رو ضمیمه کردم :
یه سوال دیگه هم داشتم . من از وقتی که از بانک اکسس در برنامم استفاده کردم سرعت کار با بانک ها خیلی کم شده . (قبلا از paradox استفاده میکردم. برای مثال قبلا با زدن کلید دو تا جدول رو با دستورات While مقایسه می کردم و کپی می کردم اما الان این کار با بانک اکسس حداقل 4-5 ثانیه طول میکشه و این خیلی کاربرارو حداقل اذیت می کنه . مشکل کجاست ؟ دستورات من یا نوع بانک یا حتی سیستم ؟)کد:http://hp1361.persiangig.com/programing/MainDataBase.mdb
ممنون و منتظرم
سلامنقل قول:
فايلي كه فرستاديد حجمش 2.6 مگابايت است.
فايل را در اكسس باز كنيد، از منوي Tools گزينه Database util و بعد Compact and Repair را انتخاب كنيد.
نتيجه : حجم ديتا بيس شما > 360 كيلوبايت
بعد فايل را فشرده كنيد ، نتيجه : حجم ديتابيس شما > 15 كيلوبايت
اين مطلب را گفتم كه هنگام ارسال فايل دقت بيشتري داشته باشيد، تا هم زمان ارسال مشكل كمتري داشته باشيد و هم دريافت آن توسط ديگران آسان تر باشد.
نکته کاملا مفیدی بود. ممنون نانفرس جان
پس hp1361 عزیز منتظز فایل 15 kb هستم
اینم فایل بعد از فشرده سازی
راستی قسمت دوم سوالم رو جواب ندادین؟کد:http://hp1361.persiangig.com/programing/MainDataBase.rar
نقل قول:
یه سوال دیگه هم داشتم . من از وقتی که از بانک اکسس در برنامم استفاده کردم سرعت کار با بانک ها خیلی کم شده . (قبلا از paradox استفاده میکردم. برای مثال قبلا با زدن کلید دو تا جدول رو با دستورات While مقایسه می کردم و کپی می کردم اما الان این کار با بانک اکسس حداقل 4-5 ثانیه طول میکشه و این خیلی کاربرارو حداقل اذیت می کنه . مشکل کجاست ؟ دستورات من یا نوع بانک یا حتی سیستم ؟)
در ضمن من امروز اتفاقی در کوئری که از بانکم گرفتم چند تا رکورد اضافه کردم و با کمال تعجب دیدم که به بانک اصلی اضافه شدن . مگه برای اضافه کردن رکورد به بانک با استفاده از کوئری نباید تعاریف خاصی مانند پارامتر ها رو داشته باشیم ؟
بازم ممنون و منتظرم
برای اضافه کردن رکوردها به جدول با استفاده کامل از دستورات sql نتونستم مشکلتو حل کنم. اگر کسی از دوستان میدونه راهنمایی کنه
یک راه موجود اینه که رکوردها رو تک تک چک کنی و بعد از insert into استفاده کنی
همونطور که خودت گفتی به موارد زیادی میتونه بستگی داشته باشه که من حجم دیتابیس رو بهش اضافه میکنم و نوع بانک رو که گفتی از لیست حذف میکنم. مطمئنا access و ADO بهتر از paradox هست. حتما میدونید که borland هم دیگه پارادوکس رو حمایت نمیکنه!نقل قول:
یه سوال دیگه هم داشتم . من از وقتی که از بانک اکسس در برنامم استفاده کردم سرعت کار با بانک ها خیلی کم شده . (قبلا از paradox استفاده میکردم. برای مثال قبلا با زدن کلید دو تا جدول رو با دستورات While مقایسه می کردم و کپی می کردم اما الان این کار با بانک اکسس حداقل 4-5 ثانیه طول میکشه و این خیلی کاربرارو حداقل اذیت می کنه . مشکل کجاست ؟ دستورات من یا نوع بانک یا حتی سیستم ؟)
پس در یک تاپیک دیگه بیشتر توضیح بده تا مشکل اصلی مشخص شه
اگر از dbgrid استفاده کردید، با ado طبیعی هست ولی با paradox و کامپوننت query خیرنقل قول:
در ضمن من امروز اتفاقی در کوئری که از بانکم گرفتم چند تا رکورد اضافه کردم و با کمال تعجب دیدم که به بانک اصلی اضافه شدن . مگه برای اضافه کردن رکورد به بانک با استفاده از کوئری نباید تعاریف خاصی مانند پارامتر ها رو داشته باشیم
سلام
در حال حاضر از حلقه While برای اضافه کردن رکرود استفاده میکنم که در هر دفعه حدود 4-5 ثانیه طول میکشه . دلیلش رو هم نمیدونم . حجم بانک همون 2 مگ هستش و تنها 10 رکورد داره.
اگه از دوستان دیگه بانک پیوستیمو امتحان کردن ممنون میشم نظرشون رو بدن
منتظرم
با پيغام خصوصي پيگيري ميكنم. اگر هم تاپيك مجزا ايجاد كني كه دوستان ديگه هم نظر بدن بهترهنقل قول:
در هر دفعه حدود 4-5 ثانیه طول میکشه . حجم بانک همون 2 مگ هستش و تنها 10 رکورد داره.
چرا اینقدر حجم فایلت زیاده اونم با 10 رکورد
بعد از مدتها با يك آموزش جديد:
استفاده از كاراكتر هاي خاص براي دستورات شرطي:
قبلا به همراه LIKE كاراكتر % رو به كار برده بودم. اين كاراكتر تمام فيلدهايي رو كه با شرط دستور مطابقت داشتند و داراي طول مساوي و يا بيشتر از رشته بودند رو بر مي گردوند.
امروز ميخوام در مورد كاراكتر _ و [] توضيح بدم.
فرض كنيد به دنبال فيلد هايي هستيم كه سه حرفي هستند و دو حرف اول اونها AB هست. اگر شرط رو به صورت
بنويسيم تمام فيلدهاي abc, aba, abr, abz, … در نتيجه حاصل هست.کد:
LIKE AB_
حالا اگر از اين كه فيلد با چه كاراكتري شروع شده اطلاعي نداشته باشيم و مجموعه اي از كاراكترهاي فيلدها رو بخوايم چي؟ از [] استفاده ميكنيم
مثال:
تمام فيلدها رو كه با حروف a,b,c,d,e,f,g شروع ميشند رو در نتيجه حاصل بر مي گردونه.کد:
LIKE [a-g]%
پيروز باشيد
ممنون از تاپیک عالی که زدی
من یه مشکل دارم وقتی که میخواهم بین دو تاریخ رو جستجو کنم هیچ جستجویی پیدا نمیکنه
من همین کد رو میزنم
کد:sql.Add('select * from Company where Date between '+MaskEdit1.Text+' and '+MaskEdit2.Text);
سلامنقل قول:
نوع فيلد تاريختون چيه؟ DateTime يا رشته؟ تاريخ فارسي است يا لاتين؟
نوع فیلد DateTime هست و تاریخ رو فارسی وارد کردم
براي پيشگيري از مشكلات بعدي:نقل قول:
نوع فیلد DateTime هست و تاریخ رو فارسی وارد کردم
- نوع فيلد رو رشته اي و تاريخ رو با فرمت yy/mm/dd يا yyyy/mm/dd وارد كنيد. مثلا 9/8/86 به صورت 09/08/86 ذخيره ميشه
من هم همینجوری به صورت yyyy/mm/dd ذخیره کردم
منظورتون از رشته ای اینه که نوعش رو در Access به صورت Text ذخیره کنم؟
میخواستم بدونم چرا اصلا مقایسه ای در مورد تاریخ ها انجام نمیده؟
بله و البته متغير مربوط به تاريخ در دلفي هم بايد string باشهنقل قول:
منظورتون از رشته ای اینه که نوعش رو در Access به صورت Text ذخیره کنم؟
از اونجا كه نوع datetime فقط براي تاريخهاي ميلادي هست، تاريخ 31/02/86 براي اين datatype قابل قبول نيست. چون ماه فوريه 29 روزه هستنقل قول:
میخواستم بدونم چرا اصلا مقایسه ای در مورد تاریخ ها انجام نمیده؟
آخه من مثلا از تاریخ 11/11/86 تا تاریخ 15/11/86 مقایسه انجام دادم ولی هیچ مقداری رو برای اون پیدا نکرد؟
كد رو به صورت زير بنويس:نقل قول:
کد:sql.Add('select * from Company where Date between "'+MaskEdit1.Text+'" and "'+MaskEdit2.Text+'"');
دستت درد نکنه خیلی کارم راه افتاد
حذف شود.................
یه سوال دیگه هم دارم
میخواستم بدونم اگه بخوام جمع رکوردهای یه فیلد رو درون یه Label ذخیره کنم باید از چه کدی استفاده کنم
نوع فیلد عددی باشه یا رشته ای؟
قبلا توضيح داده شده. بايد از SUM استفاده كنيد.نقل قول:
میخواستم بدونم اگه بخوام جمع رکوردهای یه فیلد رو درون یه Label ذخیره کنم باید از چه کدی استفاده کنم
فرقي ندارهنقل قول:
نوع فیلد عددی باشه یا رشته ای؟
من اون Sum رو دیده بودم ولی هر چی میخوام مثلا مقدارش رو توی یه Label ذخیره کنم نمیتونم و کار نمیکنه
-كدي رو كه نوشتي به صورت كامل بذارنقل قول:
-اگر پيغام خطا ميگيري هم بنويس