فهمیدم اشکالش چی بود
به خاطر این خطا میداد که من فکر میکردم خروجی ADOQuery1.Fields[0].Value به صورت عدد هست و من از تابع IntToStr استفاده می کردم
الآن به خوبی کار میکنه
باز هم از شما تشکر میکنم
Printable View
فهمیدم اشکالش چی بود
به خاطر این خطا میداد که من فکر میکردم خروجی ADOQuery1.Fields[0].Value به صورت عدد هست و من از تابع IntToStr استفاده می کردم
الآن به خوبی کار میکنه
باز هم از شما تشکر میکنم
یه سوال دیگه هم داشتم
شما Inner Join و Left و Right Join رو گفتید ولی من یه جور دیگه میخوام Join انجام بدم به این صورت
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
میخواستم بدونم از چه کدی استفاده کنم
خیلی ممنون
اگر در هر دو جدول فيلدهاي يكسان داريد از union استفاده كنيد
این هم مثالی برای Union
کد:http://www.w3schools.com/sql/sql_union.asp
خیلی ممنون
سلام.
آقا فرهاد من يه فرم ثبت نام دارم كه روي اين فرم يك dbtext گذاشتم كه با استفاده از count تعداد ركوردها رو بدست بياره و نشون بده ولي فقط در اولين اجرا تعداد رو درست نشون ميده يعني ميخوام هر موقع مشخصات يه نفر ديگه وارد و دكمه ثبت زده شد يكي به اون count اضافه بشه ولي در همون لحظه اضافه نميكنه بايد از اجرا خارج بشم و وقتي دوباره اجرا ميكنم تعداد رو درست نشون ميده.
ميشه بگيد چيكار كنم تا درست بشه
مرسي.
ضمن تشكر از شما دوست عزيز كه راه حل مشكلتون رو در اينجا قرار ميديد. قبلا در همين تاپيك هم توضيح داده شده بود:نقل قول:
کد:http://forum.p30world.com/showpost.php?p=1688154&postcount=54
چرا dbtext?نقل قول:
شما ميتوني تعداد رو در يك متغير public ذخيره كني و عمليات مورد نظر رو با اون متغير انجام بدي
مگه اشكالي داره از dbtext استفاده كنم؟
دقيقا همون عملياتش رو نمي دونم چطوري بايد بنويسم. توي onclick دكمه ثبت بايد بنويسم ديگه، آره؟
ممكنه بگيد چي بايد بنويسم؟
حذف شود ....
بعد از غيبت طولاني در اين تاپيك يك آموزش جديد:
همونطور كه قبلا گفته بودم دستورات ساختن اشیا در پایگاه داده و تنظیم ویژگی ها و خصوصیات پایگاه داده (DDL) رو بنا به نياز دوستان ميگم.
دوست عزيزي در تاپيك زير در مورد اضافه كردن فيلد در زمان اجرا پرسيده بودند:
براي اين كار بايد از ALTER TABLE استفاده كنيم:کد:http://www.forum.p30world.com/showthread.php?t=211988
شكل كلي دستور:
table_name: نام جدولکد:ALTER TABLE table_name
ADD column_name datatype
column_name: نام فيلد
datatype: نوع فيلد
فرض كنيد ميخوايم فيلد MyField رو با طول 50 كاراكتر به جدول inventory اضافه كنيم:
موفق باشيدکد:alter table inventory add MyField varchar(50)
سلام دوستان
یه سوال .
من سه تا فیلد دارم که می خوام در خروجی (که می تونه یه DBGrid باشه) با هم نشون داده بشن . مثلا فرض کنید سه فیلد روز , ماه و سال که طبیعتا در خروجی باید به شکل ستون تاریخ (استفاده از همون AS) نمایش داده بشن و در ضمن باید بین اون ها کااکتر اسلش (/) قرار داده بشه یه چیزی مثل این :
1387/02/01
با برنامه نویسی این کار به راحتی انجام می شه با + به هم متصلشون می کنی و یک اسلش هم بینشون می زاری.
ولی این رو می خواستم با استفاده از یک کوئری اس کیو ال انجامش بدم . (خروجی تو دی بی گرید)
حالا کوئری رو چه طوری بنویسمش .
سلام دوستان.
مجددا مزاحم می شم
من سوالی در مورد دستورات خود SQL داشتم .
من یه جدول دارم که سه فیلد سال , ماه و روز داره . همچنین یه فیلد شماره فایل (پرونده) .
این جا یه ادارس (این برنامه) . با شروع سال جدید شماره ی فایل های اون ها از یک آغاز می شه . (جاهای دیگه این جوری نیس)
خوب من برای اینکه این کار رو بتونم در برنامم انجام بدم , تصمیم گرفتم که تاریخ آخرین رکورد رو بگیرم (یعنی بزرگترین تاریخ رو) بعد به اپراتور که با برنامم کار می کنه پیشنهاد کنم و اگه اون دید که سال جدید شده خودش شماره رو از یک بزنه و در غیر این صورت همون رو وارد کنه . اگه ما می خواستیم فقط مکس بزرگترین شماره فایل رو برگردونیم همیشه یک عدد بزرگی برمیگردون بنابراین مکس تاریخ رو هم به هش اضافه کردیم .
حالا تو کئری که این کار رو انجام بده موندم. می خوام که فقط تو یک کوئری انجام بشه . همون طور که گفتم برنامه باید مکس سه فیلد رو پیدا کنه همچنین باید مکس شماره ی پرونده رو هم داشته باشیم تا یکی به هش اضافه کنیم و به کاربر پیشنهاد کنیم .
این کوئری خطا داره ولی می تونه منظوره منو برسونه . پیشنهاد شما چیه؟
کد:SELECT MAX(stuff_File_Number) AS FileNumber
FROM Send_Get
WHERE (stuff_Date_Year=MAX(stuff_Date_Year) AND stuff_Date_Month=MAX(stuff_Date_Month) AND stuff_Date_Day=MAX(stuff_Date_Day))
با دستورات sql هم تقريبا به همون سادگي انجام ميشه:نقل قول:
year: فيلد سالکد:select year+"/"+month+"/"+day as new_date from table
month: فيلد ماه
day: فيلد روز
يك راه حل ميتونه اين باشه:نقل قول:
- تاريخ جاري سيستم رو بگيري
- قسمتي رو كه مربوط به سال ميشه درون جدول جستجو كني
- اگر مورد مشابهي بود، يعني اينكه قبلا براي سال جديد تاريخ و شماره پرونده وارد شده -> پس يك واحد به شماره پرونده اضافه ميكنيد
- در صورتي كه مورد مشابهي نبود شماره پرونده از ابتدا شروع ميشه
اين راه حل با يك query ساده و كمي كدنويسي انجام شدني هست.
سلام
آقا فرهاد اگه ممکنه در مورد stored procedure در sql و نحوه استفاده از اونا توی دلفی توضیح بدید هرجا رفتم نتیجه ای حاصل نشده
اين تاپيك مختص دستورات زبان Transact SQL هست و ارتباطي با نرم افزار مديريت پايگاه داده SQL server نداره. از اونجا كه بحث sp ها (stored procedure) مربوط به sql server هست، لطفا تاپيك جداگانه ايجاد كنيد.نقل قول:
به دليل درخواست هاي دوستان عزيز برنامه نويس، اين آموزشها تا پست #170 به صورت مقاله تهيه شد
اميدوارم مورد توجه و استفاده عزيزان قرار بگيره
لينك مقاله در پست اول قرار داده شد
پيروز باشيد
پاک شود ...
..............................................
پاک شود ...
سلام مرسی که وقت میذارید و پیغاممو میخونید
من چجوری میتونم مقدار وارد شده در edit با مقادیر یک table در sql مقایسه کنم؟!
یه برنامه با دلفی دارم که هنگام ورود از کاربر شماره کاربری و رمز عبور میخواد من میخوام تو setting برنامم بتونم با دادن شماره کاربری و رمز عبور فعلی و رمز جدید , رمز قبلیو عوض کنم.
برای اینکار نیاز به مقایسه و پیدا کردن ادرس رکورد مورد نظر دارم .. میشه کمکم کنید؟
حذف شود ...............................................
سلام. خوش آمديد. يك كنترل query يا adoquery روي فرم بگذاريد و دستورات زير رو در رويداد كليك مربوط به button بنويسيد:نقل قول:
دستورات بالا در صورتي كه هر دو مورد صحيح باشند نام كاربري و پسورد مربوط به مقداري كه درون edit ها وارد مي كنيد رو بر ميگردونه و شما ميتونيد پسورد رو با مقدار جديد ويرايش كنيد.کد:ADOQuery1.SQL.Add('select * from tablename where user_name=:p1 and pass=:p2');
ADOQuery1.Parameters.ParamValues['p1']:=Edit1.Text;
ADOQuery1.Parameters.ParamValues['p2']:=Edit2.Text;
ADOQuery1.Open;
موفق باشيد
مرسی اما...نقل قول:
من کدی که فرمودین اینجوری نوشتم
بعد از ورود اطلاعات وقتی ثبت رو میزنم این error رو میدهکد:DM.QUser.SQL.Add('select * from sysuser where user_name=:'+E_Karbari.Text+' and pass=:'+E_Pass.Text+'');
DM.QUser.Parameters.ParamValues['user_name']:=E_Karbari.Text;
DM.QUser.Parameters.ParamValues['pass']:=E_NewPass.Text;
DM.QUser.Open;
Quser: parameter 'User_Name' not found
چیکار کنم؟! :"(
مشکل :نقل قول:
فكر مي كردم خودتون كشف خواهيد كرد! acrobat reader>document>file attachement (عرض كردم كه فقط براي افراد خاص هست!)
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
export رو كه انتخاب كنيد مشكلي نداره. اما براي بسته شدن مبحث attachment هاي اين pdf ، كتابها رو هم جداگانه در لينك زير گذاشتم (نمي خواستم به اين زودي فاش بشه اما شد!):نقل قول:
کد:http://rapidshare.com/files/112388973/SQL_Server_2005_ebooks.rar
خوب حق داره كه اين error رو بده. اگر شما با دقت آموزشها رو بخونيد متوجه خواهيد شد كه user_name=:'+E_Karbari.Text و سپس استفاده از ParamValues['user_name']:=E_Karbari.Text صحيح نيست.نقل قول:
كد رو به همون صورتي كه نوشتم بنويسيد. يعني بعد از " = " علامت " : " بگذاريد و بعد نام پارامتر رو بنويسيد.
اگر باز هم به مشكل برخورديد پست جديد بديد، پست قبلي رو ويرايش نكنيد. اين يكي رو هم كه ويرايش كرديد اتفاقي ديدم.
موفق باشيد
یه عالمه مرسی مشکلم حل شد..ایشالا بری بهشت آقا فرهاد :)
همگی برام دعا کنید سر دفاع سوالای چرت و پرت نپرسن ازم!!! :s
راستی میشه یه مقاله یکی 2 صفحه ای از sql بهم بدین به عنوان مقدمه واسه پروژم میخوام..مرسی :)
خواهش مي كنم. در صفحه اول همين تاپيك دلايل استفاده از sql و همچنين مقدمه مورد نظر شما گفته شده.
موفق باشيد
سلام
من در حال نوشتن یه برنامه هستم که 160 رکورد را باید از طریق کوئری به دیتابیس منتقل کنم ولی اررور
میدهکد:LIST OU OF BOUND(154)
من تا حالا هیچ وقت برام لازم نبوده این همه رکورد را یکباره به دیتابیس منتقل کنم
پیشنهاد لازم دارم و ببینید که خط فرمانهام درسته یا نه .
لطفاً فوری :: کمک فوری تا نیم ساعت دیگه لازم دارم
کمک
کمک
کمک
کد:begin
with ADOQuery do
begin
Close;
SQL.Clear;
SQL.Add('select ucodem from uprop where ucodem=:a');
Parameters[0].Value:=pcodem.Text;
Open;
end;
if ADOQuery.IsEmpty then
Begin
try
ADOConnection.BeginTrans;
With ADOQuery do
Begin
close;
SQL.Clear;
SQL.Add
('insert into uprop(ucodem,ucodeo,udatev,udateo,ushenase,uname,ufamily,unamefa,ushsh,udateb,uplaceb,uplaces,uadres,utel,umagh,ureshte,uplacet,uavg,utahsilfa,utahsilma,utedadm,utedadch,uadrest'+
'msh,mja,maz,mra,mtozihat,femdad,fbasij,fnashr,fmazhabi,fhonari,fsoprt,fnezami,ffogh,fedari'+
'11,12,13,14,15,16,17,18,21,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38,41,42,43,51,52,61,62,63,64,65,71,72,73,74,75,81,82,83,ftoz'+
'kh1,kh2,kh3,pa1,pa2,pa3,gr1,gr2,gr3,ph1,ph2,ph3,fi1,fi2,fi3,el1,el2,el3,co1,co2,co3,za1,za2,za3,ba1,ba2,ba3,va1,va2,va3,ma1,ma2,ma3,ttoz,sp1,sp2,sp3,sp4,sk1,sk2,sk3,sk4,sb1,sb2,sb3,sb4,sa1,sa2,sa3,sa4,se1,se2,se3,se4'+
'so11,so12,so13,so14,so21,so22,so23,so24,hna1,hna2,hna3,hne1,hne2,hne3,hnt1,hnt2,hnt3,hnp1,hnp2,hnp3,hnm1,hnm2,hnm3,hh1,hh2,hh3)'+
'values(:a,:b,:c,:d,:e,:f,:g,:h,:i,:j,:k,:l,:m,:n,:o,:p,:q,:r,:s,:t,:u,:v,:w,:x,:y,:z'+
':aa,:ab,:ac,:ad,:ae,:af,:ag,:ah,:ai,:aj,:ak,:al,:am,:an,:ao,:ap,:aq,:ar,:as,:at,:au,:av,:aw,:ax,:ay,:az'+
':ba,:bb,:bc,:bd,:be,:bf,:bg,:bh,:bi,:bj,:bk,:bl,:bm,:bn,:bo,:bp,:bq,:br,:bs,:bt,:bu,:bv,:bw,:bx,:by,:bz'+
':ca,:cb,:cc,:cd,:ce,:cf,:cg,:ch,:ci,:cj,:ck,:cl,:cm,:cn,:co,:cp,:cq,:cr,:cs,:ct,:cu,:cv,:cw,:cx,:cy,:cz'+
':da,:db,:dc,:dd,:de,:df,:dg,:dh,:di,:dj,:dk,:dl,:dm,:dn,:do,:dp,:dq,:dr,:ds,:dt,:du,:dv,:dw,:dx,:dy,:dz'+
':ea,:eb,:ec,:ed,:ee,:ef,:eg,:eh,:ei,:ej,:ek,:el,:em,:en,:eo,:ep,:eq,:er,:es,:et,:eu,:ev,:ew,:ex,:ey,:ez'+
':fa,:fb,:fc,:fd)');
Parameters[0].Value:=pcodem.text;
Parameters[1].Value:=pcodeo.text;
Parameters[2].Value:=MaskEdit1.text;
Parameters[3].Value:=MaskEdit2.Text;
Parameters[4].Value:=pshenase.text;
Parameters[5].Value:=pname.text;
Parameters[6].Value:=pfamily.text;
.
.
.
اگر تو خط فرمان و یا جایی دیگه از برنامه اشکال هست لطفاً بگید
سلام. ظاهرا كه مشكل حل شد:
کد:http://www.forum.p30world.com/showthread.php?t=228044
آقا دستت در نكن عالي بود خيلي ممنون:10::40:
آيا ميشه جمع يكي ازستون هاي dbgrid رو حساب كرد يا dbgrid فقط براي نمايش اطلاعات است؟
خوش آمديد. اگر با دستورات sql ميخوايد، group by رو جستجو كنيد
با سلام خدمت همه دوستان مخصوصا farhad عزیز
مشکل من!
وقتی در sql از case استفاده می کنم، دیگه نمی تونم اون فیلدی رو که در اون از case استفاده کردم رو با نام دیگه ای نمایش بدم( یعنی از as استفاده کنم).
امیدوارم منظورم رو متوجه شده باشید.
دقیقا اینجوری:
select importance = CASE importance WHEN 1 THEN 'is1' WHEN 2 THEN 'is2' as newcaptionعبارت case به تنهایی جواب می ده اما وقتی as رو اضافه می کنم از as خطا می گیره.
همه جور پرانتز گذاری رو هم امتحان کردم ولی فایده نداره که نداره.
سلام دوست عزيز. به شكل زير استفاده كنيد:
کد:select importance case when importance='1' then 'is1' when importance='2' then 'is2' end as newcaption
نقل قول:من خواستم بر اساس چند فيلد filter كنم مثلا اگر هر كدام از فيلدها را بلد بود در edit مربوط به آن وارد كند و بر اساس آن qurey بگيرم براي اين مورد كد زير را وارد كردم ولي با وارد كردن يكي از فيلها كل جدول را نمايش مي دهد مثل اينكه اصلا filter نمي كند :DataModule11.adoquery1.sql.add('select onvan_ketab,code_onvan , shomare_sabt_ketab from book where onvan_ketab like :p or onvan_ketab like :p2 or nevisandeh like :p1 or mozoe like :p4 or nasher like :p3');
DataModule11.adoquery1.parameters.paramvalues['p']:=Edit2.Text ;
DataModule11.adoquery1.parameters.paramvalues['p1']:=Edit1.Text ;
Datamodule11.adoquery1.parameters.paramvalues['p2']:='%'+Edit5.text+'%';
DataModule11.adoquery1.parameters.paramvalues['p3']:=Edit3.Text;
DataModule11.adoquery1.parameters.paramvalues['p4']:=Edit4.Text;
چه اشتباهي كردم؟
لطفا ميشود كامل ترتوضيح دهيد.(fat64)نقل قول:
اين كد جوابگوي شما نيست. بايد كد رو طوري بنويسيد كه فيلدهايي كه وارد نشدند و خالي هستند وارد query شما نشه. يعني دستور sql رو با يك case ساده بسازيد و بعد به كوئري اضافه كنيد. مثلا با يك دستور case فيلدهاي خالي رو چك كنيد و فقط فيلدهايي رو كه داراي مقدار هستند به ابزار query بفرستيد. در تالار نمونه هايي وجود داره.نقل قول: