PDA

View Full Version : سوال: اظافه‌ كردن یك ریكورد جدید با دستورات SQL



akar_program
چهارشنبه 26 مرداد 1390, 12:07 عصر
سلام دوستان من دستوری زیر برای اظافه‌ كردن یك ریكور با تیبل Matable ایستفاده‌ كردم با روش زیر

INSERT INTO Matable (P_Id, LastName, FirstName)
VALUES (5, 'saman', 'muhamad')

باد روی یك دكمه‌ كد زیر نویشتم

ADOQuery1.Active:=True;


ایرر میده‌ ایا مشكیل كجاس ممنون

Delphi 2010
چهارشنبه 26 مرداد 1390, 14:05 عصر
چه اروری میده

akar_program
چهارشنبه 26 مرداد 1390, 14:37 عصر
ببخشید الان با دلفی دست رسی ندارم بگم چه‌ ایروری میده‌ ولی سول ایا كدم دروست هست میشه‌ با همون روش ایستفاده‌ كرد كه‌ من بكار بوردم ؟؟

Vahid.Shatery
پنج شنبه 27 مرداد 1390, 00:13 صبح
سلام
شما باید تو خود کد دستوات sql را داخل qry بریزین و بعد Excecute کنید .

akar_program
پنج شنبه 27 مرداد 1390, 05:37 صبح
ممنون ولی در dbgrid نیشون نمیده‌ باید برنامه‌ بست و دووبار باز گنید
یك سوال دیگه‌ هم چ طور میشه‌ با جای

VALUES (5, 'saman', 'muhamad')

انها از سه‌ تا ئیدیت باكس ایستفاده‌ كرد ممنون

Vahid.Shatery
پنج شنبه 27 مرداد 1390, 09:51 صبح
سلام
گرید را باید به کوئری وصل کنید. نباید به tbl وصل بشه .
برای مورد دوم هم بیشتر توضیح بدین .

akar_program
پنج شنبه 27 مرداد 1390, 10:27 صبح
چطور كویر وصل كنم وصل كردم ایرور میده‌ یك رهنمای بكنید در مورد دووم

میخواهم با جای نویشتی پیش فرض از یك edit نویشت بیرم مسلن جیزی اینطوری
INSERT INTO Matable (P_Id, LastName, FirstName)VALUES (edit1.text, edit2.text, edit3.text')

سعید صابری
پنج شنبه 27 مرداد 1390, 13:05 عصر
میتونی مقادیر بصورت پارامتر هم بفرستی.



query
INSERT INTO Matable (P_Id, LastName, FirstName)VALUES (:a, :b, :c)

delphi
ADOQuery1.Parameters.ParamByName('a').Value:=Edit1 .Text;
ADOQuery1.Parameters.ParamByName('b').Value:=Edit2 .Text;
ADOQuery1.Parameters.ParamByName('c').Value:=Edit3 .Text;

akar_program
جمعه 28 مرداد 1390, 12:30 عصر
ببخشید میشه‌ كامل توضیح بدید هر كاری كردم نتونستم میخواهم با ایستفاده‌ كد sql یك ریكورد با جدولم أضافه‌ ‌ كنم با ایستفاده‌ از پارامیتر ممنون یكی یك توضیح كامل از ابتدا بده‌ كه‌ باید جه‌ كامپوننتی بیارم روی صحه‌ كدها كجا بنویسم

سعید صابری
جمعه 28 مرداد 1390, 13:43 عصر
سلام دوستان من دستوری زیر برای اظافه‌ كردن یك ریكور با تیبل Matable ایستفاده‌ كردم با روش زیر

INSERT INTO Matable (P_Id, LastName, FirstName)
VALUES (5, 'saman', 'muhamad')

باد روی یك دكمه‌ كد زیر نویشتم

ADOQuery1.Active:=True;


ایرر میده‌ ایا مشكیل كجاس ممنون

کامپوننت خاصی نمی خواد همون کامپوننتی خودت استفاده کردی (ADOQuery1) یا هر کامپوننت دیگه بتونه دستورات sql اجرا کنه
کد ذیل همه که مشخصه مقادیر ادیت باکس ها را می ریزه توی پارامترها.



ADOQuery1.Parameters.ParamByName('a').Value:=Edit1 .Text;
ADOQuery1.Parameters.ParamByName('b').Value:=Edit2 .Text;
ADOQuery1.Parameters.ParamByName('c').Value:=Edit3 .Text;


ودر آخر هم


Adoquery1.open

akar_program
جمعه 28 مرداد 1390, 15:30 عصر
سلام لطفا این فایل نگا كنید ببین من كجا ایشتبا كردم ممنون

سعید صابری
جمعه 28 مرداد 1390, 16:20 عصر
اشکالت در query بود که می خواستی همزمان هم دستور insert و select را با هم انجام بدی

akar_program
جمعه 28 مرداد 1390, 17:56 عصر
سلام نمونه‌ی شوما هم دوتا ایرر میده‌ پشت سر هم اینها هست

---------------------------
Debugger Exception Notification
---------------------------
Project Project5.exe raised exception class EDatabaseError with message 'ADOQuery1: Cannot perform this operation on a closed dataset'.
---------------------------
Break Continue Help
---------------------------


---------------------------
Project5
---------------------------
ADOQuery1: Cannot perform this operation on a closed dataset.
---------------------------
OK
---------------------------

hsn_abieteh
جمعه 28 مرداد 1390, 18:40 عصر
به این صورت درج کنید.

adoquery1.sql.clear;
adoquery1.sql.text:='insert into(FerstName,LastName,Phone) Phonebook values :nam,:fnam,:phon';
ADOQuery1.Parameters.findparam('nam').Value:=Edit1 .Text;
ADOQuery1.Parameters.findparam('fnam').Value:=Edit 2.Text;
ADOQuery1.Parameters.findparam('phon').Value:=Edit 3.Text;
ADOQuery1.ExecSQL;

سعید صابری
جمعه 28 مرداد 1390, 21:21 عصر
منم همین کد نوشته بودم.

پیغام خطا فکر کنم به خاطر اینه آدرس فایل اکسس در Adoconnection است.

akar_program
شنبه 29 مرداد 1390, 00:45 صبح
باز هم نشود لطفا یك تیست بكنن

سعید صابری
شنبه 29 مرداد 1390, 14:31 عصر
باز هم نشود لطفا یك تیست بكنن

نمونه ای که من گذاشتم درسته. فقط من ادرس فایل اکسس در ADOCONNECTION عوض کرده بودم که شما می بایست درستش می کردی. اینی که شما توی پست 16 گذاشتین خودتون اشتباه کدها را نوشتین. اگه این خط به این شکل تغییر بدی در درست میشه.

شکل صحیح


adoquery1.sql.Add('insert into Phonebook(FerstName,LastName,Phone) VALUES (:nam,:fnam,:phon)');


در ضمن وقتی از adoconnection استفاده می کنی دیگه نیازی برای هر کدوم از adoquery ها connectionstring تعریف کنی.خاصیت connection آنها را برابر adoconnection قرار بده.
و بعد شما در حالت اولیه در adoquery1 دستور select نوشتین و بعد بوسیله کد دستور insert قاعدتا اون دستور


SELECT * from phonebook


دیگه از بین رفته پس چیزی در dbgrid نشون نمیده. برای اینکه نمایش همزنان در dbgrid نیز داشته باشین باید بعد از کدهای اضافه کردن رکورد این کد اضافه کنی یا از یک adoquery دیگه برای نمایش استفاده کنی.


ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * from phonebook');
ADOQuery1.Open;

akar_program
شنبه 29 مرداد 1390, 14:45 عصر
خیلی ممنون مشكیل حل شود