با چه قسمتي از كد مشكل داريد؟نقل قول:
Printable View
با چه قسمتي از كد مشكل داريد؟نقل قول:
سلام خیلی ممنون از راهنمایی شما ولی اون importance اولی اضافیه یعنی به این صورتنقل قول:
select case when importance='1' then 'is1' when importance='2' then 'is2' end as newcaption
من تا به حال از اين دستور استفاده نكرده ام مي شود يك مثال بزنيد چون نمي دانم بجاي كدام عبارت بايد مقادير خودم را بگذارم و چي رو بايد از قبل تعريف كنم ؟نقل قول:
من تا به حال از اين دستور استفاده نكرده ام مي شود يك مثال بزنيد چون نمي دانم بجاي كدام عبارت بايد مقادير خودم را بگذارم و چي رو بايد از قبل تعريف كنم ؟نقل قول:
در تالار جستجو كردم ولي چيزي كه مي خواستم نبود مي شود خودتان مثال بياوريد ممنون من همزمان با گرفتن پاسخ سوالهايم در دلفي تست مي كنم مي شود جواب دهيد ممنون؟نقل قول:
importance اولی برای زمانی هست که میخواید محتویات اصلی فیلد رو هم در نتیجه حاصل داشته باشید.نقل قول:
بگید دقیقا چه هدفی داریدنقل قول:
از اونجا که مستقیما به sql مربوط نمیشه در تاپیک جدید مطرح کنید، من یا دوستان دیگر جواب خواهیم داد.نقل قول:
من 5 تاedit دارم که کاربر پر میکند و براساس هر کدام که پر باشد باید در جدول جستجو کند ولی چون ممکن است بعضی از این edit ها خالی باشد کل جدول را می آورد ......من مدت زیادی که روی این موضوع موندم .هر کمکی می تونید بکنیدنقل قول:
سلام
لطفا در مورد سینتکس دستور Insert into توضیح بدین و 1 مثال بزنین
ممنون
سلام. لطفا قبلش جستجو كنين و يعد پست بدين!نقل قول:
کد:http://www.forum.p30world.com/showthread.php?p=1810207&highlight=insert#post1810207
------------- حذف شود -------------------نقل قول:
من وقتی که مقدار select * into را در سایت جستجو می کنم پیغام زیر را نشان می ده
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 35 bytes) in /home/p30world/public_html/forum/search.php on line 956
در ضمن اگه می شه کمی درباره کاربرد select * into اون هم برای استفاده در بانک دیگر توضیح بدید
من برای بانکم پسورد گزاشتم و وقتی که از دستور بالا استفاده می کنم پیغام خطا می ده که پسورد خالی استنقل قول:
ado1.SQL.Add('select * into table1 in bookk.db from table1');
نقل قول:
من وقتی که مقدار select * into را در سایت جستجو می کنم پیغام زیر را نشان می ده
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 35 bytes) in /home/p30world/public_html/forum/search.php on line 956
در ضمن اگه می شه کمی درباره کاربرد select * into اون هم برای استفاده در بانک دیگر توضیح بدید
کد:http://www.forum.p30world.com/showthread.php?p=1872841&highlight=select#post1872841
از اونجا كه احتمالا از paradox استفاده ميكنيد، قبل از اجراي كوئري session.addpassword رو امتحان كنيدنقل قول:
من برای بانکم پسورد گزاشتم و وقتی که از دستور بالا استفاده می کنم پیغام خطا می ده که پسورد خالی است
نقل قول:
داداش فرهاد از این که دیر جواب شما را دادم خیلی عزر می خوام
بانک من اکسس است و پسورد دارد !
در کل می خوام تمام جدول های بانکم در یک بانک با نام دیگر داشته باشم (قبلا از دستور Copy استفاده می کردم ولی ... ) از وقتی که دستور select * into رو دیدم حالا می خوام از این دستور استفاده کنم !
درباره لینکی هم که گذاشتید ممنون ولی من تا اینجای کار رو از شما یاد گرفته بودم
در کل من از بانک اکسس استفاده می کنم (bank1.db که در واقع بانک اکسس است پسوندش را تغییر دادم) که داخلش 4 تا جدول با نام های (table1 - table2-table3 - table4) وجود دارد !
حالا می خوام یک بانکی با نام (bank0.db) داشته باشم که تمام جدول ها رو توش داشته باشم ! (نگید از دستور کپی استفاده کن ها !!! می خوام اگه امکانش باشه بنابه دلایلی از دستور Select * into ) و یا یه چیزی تو این مایه ها استفاده کنم !
پیشاپیش از جوابی که می دهید تشکر می کنم
یه سوال دیگه :
چطوری می تونم اطلاعات تکراری یک جدول رو نشون بدم ؟
من جستجو کردم با Not distinct مواجه شدم ولی نتونستم ازش استفاده کنم !
نمایش داده های تکراری جدول به کمک دستورات sql !
عذر! :46:نقل قول:
داداش فرهاد از این که دیر جواب شما را دادم خیلی عزر می خوام
از اونجا كه پسوند فايل شما db بود گفتم كه شايد از پارادوكس استفاده كرده باشيد. اما براي access بايد در connection string مربوط پسورد رو هم قرار بديد. قبلا در تاپيك حاي ديگه گفته شدهنقل قول:
بانک من اکسس است و پسورد دارد !
كافيه كه از 4 دستور select into طبق آموزشي كه گذاشته شده براي 4 جدول استفاده كنيدنقل قول:
در کل من از بانک اکسس استفاده می کنم (bank1.db که در واقع بانک اکسس است پسوندش را تغییر دادم) که داخلش 4 تا جدول با نام های (table1 - table2-table3 - table4) وجود دارد !
حالا می خوام یک بانکی با نام (bank0.db) داشته باشم که تمام جدول ها رو توش داشته باشم ! (نگید از دستور کپی استفاده کن ها !!! می خوام اگه امکانش باشه بنابه دلایلی از دستور Select * into ) و یا یه چیزی تو این مایه ها استفاده کنم !
در حالت عادي بدون استفاده از distinct شما تمام ركورد ها رو داريد. ركورد هاي بدون تكرار و يا تكراري.نقل قول:
یه سوال دیگه :
چطوری می تونم اطلاعات تکراری یک جدول رو نشون بدم ؟
من جستجو کردم با Not distinct مواجه شدم ولی نتونستم ازش استفاده کنم !
نمایش داده های تکراری جدول به کمک دستورات sql !
اگر ميخواهيد فقط ركوردهاي با تكرار 2 يا بيشتر رو داشته باشيد، اول با يك كوئري count رو از جدول بگيريد و بعد از يك join استفاده كنيد.
باسلام و خسته نباشید
در قسمت آموزش دستور where که به صورت ذیل الذکر بیان شده بود وقتی از دستورات بیان شده استفاده می کنم با پیغام خطای
ADOQuery1:parameter 'param' not found روبرو می شوم . خواهشمندم طریقه تعریف parameter و حل خطای مذکور را بیان نمایید
متشکرم
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from inventory where name=:param');
ADOQuery1.Parameters.ParamValues['param']:=Edit1.Text;
ADOQuery1.Open;
سلام .خوش آمدید
کدی که شما نوشتید مشکلی نداره. اگر در زمان طراحی پارامتری رو ساختید، بعد از adoquery.close از ADOQuery1.Parameters.Clear استفاده کنید
سلام فرهاد جان مشکل حل شد ممنونم
به علت اینکه من تازه آموزش شما را شروع کردم زیاد مزاحم شما خواهم شد بایستی ببخشید
در قسمت آموزش like من دستور گفته شده را استفاده نمودم ولی با پیغام خطای '%Invalid column name 'aaa مواجه شدم
خواهشمندم راهنمائی نمایید
sql.Add('select * from inventory where name like "'+Edit6.Text+'%"'); like دستور
سلام فرهاد جان
می خواستم ببینم اگه ممکنه در مورد sp ها در اس کیو ال و کاربرد و نحوه استفاده از اونا در دلفی توضیح بدید
در ضمن من stored را در تاپیک سرچ کردم ولی چیزی پیدا نکرد
ممنون
خواهش ميكنم دوست عزيزنقل قول:
اين دستور هم مثل قبلي مشكلي نداره. اشكال در جاي ديگه هست
براي like هم از parameters استفاده كنيد و نتيجه رو بگيد
سلام. فكر كنم قبلا هم اين درخواست رو كرده بوديد. درسته؟ اينجا فقط براي دستورات T-SQL هست و از اونجا كه sp مختص sql server هست در موردش چيزي ننوشتم اما از اونجا كه خواهان داره بخشي از فوايدشو مينويسم:نقل قول:
1. دستورات StoredProcedure در بانک اطلاعاتی SqlServer هستند و موقع ایجادشون Parse می شوند به این معنا که شما خیالتون از بابت Syntax راحته.
2. به جهت اینکه Stored Procedure ها در بانک اطلاعاتی Compile می شوند سرعت اجراشون بیشتره.
3. احتمال سوء استفاده از دستورات SqlServer یا اصطلاحا Sql Injection رو به حداقل می رسونن.
یه خوبی دیگه که به نطر من SP ها دارن اینکه شما از یه DB با همون SP ها می تونید برای چندین application استفاده کنید. مثلاً فرض کنید برای یک DB متعلق به کتابخونه چند تا application هست، یکی برای manager یکی برای user و .... و هر کدوم از این application ها رو یه company مجزا نوشتن. و DB Manager برای بالا بردن امنیت به این دو شرکت فقط از طریق SP هایی که خودش تعریف می کنه سطح دسترسی می ده. اینجوری هم امنیت و صحت اطلاعات DB بالا می ره هم از دوباره کاری کاسته می شه، چون خیلی از Query ها مشترکند.
یه ویژیگی دیگش اینکه مجموعه ای از کارها با DB رو روی خود DB server انجام می ده. یه مثاله سادش اینکه فرض کند می خواهید روی یک query یک Query دیگه بگیرید، اگه همه این کارها رو سمت application server انجام بدبد، ممکنه به چندبار ارتباط با حجم انتقال زیاد با DB Server نیاز باشه، اما با SP همه عملیات میانی سمت DB انجام می شه و از اتلاف پهنای باند بیهوده و سربار زیاد سمت Application جلوگيري ميشه
و ...
براي نحوه نوشتنش هم ميتونيد به sp هاي ديتابيس master كه تعدادشون هم كم نيست مراجعه كنيد
موفق باشيد
فرهاد جان سلام از اینکه وقت میگذارید و به سؤالات جواب میدهید ممنونم
در مورد دستور Like اگر به جای " " از quotedstr استفاده کنیم مشکل حل میشود
با عرض معذرت چند سؤال دیگر داشتم خواهشمندم در صورت امکان جواب دهید
1- آیا برای نمایش خروجی دستورات SQL بایستی از DBGRID استفاده نماییم ؟
2- در مثال مطرح شده در قسمت محاسبات ریاضی وقتی cost را با 2000 جمع میکنیم و میخواهیم در ستون جدید new_cost
نمایش دهیم در DBgrid فقط مقادیر فیلد name نمایش داده میشود و ستون بقیه فیلدها خالی نمایش داده میشود و در ضمن
ستون جدید نیز ایجاد نمیشود . علت چیست ؟
3- اگر بخواهیم نتیجه محاسبات ، به عنوان مثال مجموع مقادیر فیلد (SUM) را در یک متغیر ذخیره کنیم به چه صورت عمل نماییم ؟
با تشکر و معذرت بابت طولانی شدن سؤالم . آن را پای مبتدی بودن من بگذارید
متوجه نشدم سوال بود یا به راه حل اشاره کردید؟نقل قول:
در مورد دستور Like اگر به جای " " از quotedstr استفاده کنیم مشکل حل میشود
الزامی وجود نداره اما روش معمول و ساده همین هستنقل قول:
- آیا برای نمایش خروجی دستورات SQL بایستی از DBGRID استفاده نماییم ؟
در زمان طراحی فیلد هایی را به dbgrid اضافه کردید که باید همه را حذف کنیدنقل قول:
2- در مثال مطرح شده در قسمت محاسبات ریاضی وقتی cost را با 2000 جمع میکنیم و میخواهیم در ستون جدید new_cost
نمایش دهیم در DBgrid فقط مقادیر فیلد name نمایش داده میشود و ستون بقیه فیلدها خالی نمایش داده میشود و در ضمن
ستون جدید نیز ایجاد نمیشود . علت چیست ؟
دقیقا مثل خواندن مقدار یک فیلد از جدول. فکر میکنم دوست عزیزم مرد مباح هم چنین سوالی رو مطرح کرده بودند که بعد از آموزش همون قسمت جواب رو گذاشتمنقل قول:
3- اگر بخواهیم نتیجه محاسبات ، به عنوان مثال مجموع مقادیر فیلد (SUM) را در یک متغیر ذخیره کنیم به چه صورت عمل نماییم ؟
موفق باشید
فرهاد جان سلام از راهنمائی هایت ممنونم
اگر بخواهیم در خود برنامه چک شود اگر فایل Sql موجود نیست ، فایلsql مربوطه به وسیله دستورات ساخته شود بایستی چگونه عمل شود ؟
متشکرم
اگر از ديتابيس sql server استفاده ميكنيد با استفاده از ديتابيس master و دستور زير ميتونيد وجود ديتابيس رو تشخيص بديد:نقل قول:
کد:SELECT name FROM sysdatabases WHERE name = "dbName"
فرهاد جان خسته نباشید
منظور من این بود که اگر فایل موجود نیست با استفاده از کد نویسی در خود برنامه فایل sql server ساخته شود .
آیا بایستی از دستور create table استفاده کنیم ؟
با تشکر
ابتدا create database و بعد create tableنقل قول:
اما وجود ديتابيس (يا به قول شما فايل) رو با همون دستوري كه در بالا گفتم بايد چك كنيد
سلام فرهاد جان از اینکه با حوصله جوابگوی سؤالات اینجانب هستید متشکرم طبق معمول سؤالاتی داشتم که خواهشمندم در صورت امکان پاسخ دهید :
1- در دستور ذیل الذکر ، چگونه بفهمیم database وجود دارد ؟ آیا این دستوری است که مقداری بر میگرداند ؟
2- اگر من بخواهم table هائی که استفاده میکنم سال به سال باشد مانند table86 یا table87 و این سال را ابتدا از یک ورودی مانند Edit گرفته و سپس در صورت عدم وجود ، آن را بسازم .چگونه بایستی table'+Edit.Text' را در دستور Create Table استفاده کنم ؟
SELECT name FROM sysdatabases WHERE name = "dbName"
خواهش ميكنمنقل قول:
1- اگر تست كرده بوديد متوجه ميشديد در صورت وجود ديتابيس ركورد مربوط به نام ديتابيس رو برميگردونه
2-کد:sql.Add('create table TableName'+edit1.text+' .....');
سلام
من چند تا از صفحات رو جستجو کردم چیزی در این مورد ندیدم می خواستم بدونم دستور Except ( در عبارت جبری به عنوان دستور تفاضل r-s می شناسند) وجود داره یا نه؟؟
من هر بار که از این دستور استفاده می کنم برنامه دچار خطا میشه. لطفا در مورد Syntax و مابقی جزئیات این دستور توضیح دهید.
سلام. بله دوست عزيز except وجود داره. اما اگر اشتباه نكنم از sql server 2005 پشتيباني شده. شما از چه ديتابيسي استفاده ميكنيد؟نقل قول:
اين دستور نتايج دو query رو مقايسه ميكنه و ركورد هايي رو كه در اولي هست و در دومي نيست برميگردونه
اين هم syntax:
موفق باشيدکد:select field1,field2,field3 from table1
except
select field1,field2,field3 from table2
اما من در نسخه های قبلی در راهنمای برنامه توضیحاتی در مورد این دستور دیده بودم!!! در ضمن اگر من نسخه 2000 را نصب کرده باشم بسته آپدیتی برای ارتقاع وجود داره یا نه چونکه نمی دونم به این مشکل خوردید یا نه اگر Sql Server نصب کنی بعد آنرا حذف کنی تا یه سیستم عامل جدید نصب نشه نمی شه حتی همون نخسه قبلی رو نصب کرد چه به رسه به نسخه جدید لطفا در این مورد مرا راهنمایی کنید.نقل قول:
الان books online مربوط به sql server 2000 رو نگاه ميكردم. except رو نديدمنقل قول:
براي sql server 2000 سرويس پك هاي زيادي هست اما فكر نميكنم به مشكل شما ارتباطي داشته باشه. تا حالا چنين مشكلي نداشتم
سلام خسته نباشید فرهاد جان از راهنمائی قبلی متشکرم
من وقتی دستور CREATE TABLE را به صورت
...) create table if not exists
استفاده میکنم با پیغام خطای incorrect syntax near the keyword 'IF مواجه میشوم خواهشمندم مانند همیشه راهنمائی نمایید
create table رو بايد كامل بنويسيد(نام جدول و فيلدها)
كد رو كامل بگذاريد
با سلام
چطوری میتونم رکوردی رو که با sql استخراج کردم به یک متغیر نسبت بدم؟
مثلامقداری را که در dbgrid دارم بهیک متغیر بدهم.کد:w := 'i';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select mean from table1 where dicword = param');
ADOQuery1.Parameters.ParamValues['param']:= w;
ADoQuery1.Open;
در ضمن آیا میشه از if , for در sql استفاده کرد؟
سلام. خوش آمديد
اينطوري:نقل قول:
چطوری میتونم رکوردی رو که با sql استخراج کردم به یک متغیر نسبت بدم؟
کد:http://www.forum.p30world.com/showpost.php?p=1670170&postcount=41
بله. البته براي حلقه هاي تكرار بايد از while استفاده كنيدنقل قول:
در ضمن آیا میشه از if , for در sql استفاده کرد؟
موفق باشيد
فقط ميتونم بگم عالي بود آقا فرهاد يه عالمه دستت درد نكنه من خيلي وقته كه دنبال اين مطالبم
سلام فرهاد جان خسته نباشید من با راهنمائی های شما برنامه ای نوشته ام که در آن بعنوان مثال دو فیلد f1 و f2 تعریف شده است که هر دو varchar هستند . در صورتیکه مقدار f2 برابر null باشد چگونه با استفاده از دستور locate میتوان آن را جستجو کرد من از دستور ذیل استفاده میکنم ولی جواب نمی دهد.
locate('f1;f2',vararrayof([Edit1.text,'']),[lopartialkey]) l
در ضمن وقتی بجای اینکه در f2 مقدار null ذخیره شود مقدار '' را قرار دهیم دستور جواب میدهد.
خواهشمندم در صورت امکان راهنمائی نمائید
تا حالا شده نیاز باشه از دو تا Table استفاده کنید ؟ مخصوصا لازم باشه که این 2 تا Table با هم در ارتباط باشند.
مثلاً یه برنامه داشته باشید.
1- قسمت ثبت مشخصات مشتری داره
2- یه فرم ( مثل فرم مشاور املاک برای فروش یا اجاره دادن خانه یا هر چیز دیگر ) که برای هر مشتری هر چند تا که دلمون خواست بتونیم وارد کنید
توضیح ساده تر
در جدول اولی اسم و نام و یک سری مشخصات درباره مشتریمون ، یعنی برای هر مشتری یک رکورد
در جدول دومی بی نهایت فرم برای هر مشتری
---------------------------------------------------------------
اگه از هر کسی بپرسن چطوری این 2 تا جدول رو به هم مرتبط می کنی ؟
در جواب میگه : شماره رکورد جدول اول رو تو یه فیلد در جدول دوم ذخیره مینکم
این کار خوبیه ، اما !!
اگه از جدول اول خواستیم یک رکورد را حذف کنیم ( یک مشتری را حذف کنید ) کنترل برنامه به هم می خوره
راه حل خوب برای حل این مشکل چیه ؟
منتظرم .