PDA

View Full Version : سوال: دادن دستورات SQL به پایگاه داده از نوع FireDAC



Jarvis
دوشنبه 19 فروردین 1392, 23:33 عصر
با سلام
دوستان من تا مرحله ی نشون دادن اطلاعات توی DBGrid پیش رفتم ...
حالا میخوام یه دکمه داشته باشم که مثلا یه سری اطلاعات رو توی دیتابیس اضافه کنه .. یا ویرایش کنه...
حالا برای این کار ما باید یه فرم طراحی کنیم ... ولی من فقط با کدش مشکل دارم که چجوری باید کدش رو بنویسم ...
فقط در مورد کدنویسیش منو راهنمایی کنید و این که چه کامپوننت هایی رو باید به فرم اضافه کنم؟
چون الان فقط کامپوننت های مربوط به نمایش اطلاعات رو روی فرمم دارم ...
آقای عشایری لطف کردند و یه مقاله معرفی کردن ... ولی توی اون مقاله در این مورد چیزی پیدا نکردم...
پس دوستان خواهشا مستقیم راهنمایی کنید .. شاید چند روز دیگه این پست برای یه بنده خدا به درد خورد!!

ممنون و متشکر.

BORHAN TEC
چهارشنبه 21 فروردین 1392, 13:20 عصر
سلام
راهنمای مربوط به FireDac قسمتی به نام Editing the Data داره که این موارد در اون قسمت توضیح داده شده.

Jarvis
چهارشنبه 21 فروردین 1392, 20:49 عصر
راهنمای مربوط به FireDac قسمتی به نام Editing the Data داره که این موارد در اون قسمت توضیح داده شده.
خیلی ممنون ... ولی من مشکلم حل نشد ...

tomalaki
یک شنبه 01 اردیبهشت 1392, 22:29 عصر
4 تا کامپوننت ADPhysMySQLDriverLink1 و ADGUIxWaitCursor1 و ADConnection1 و ADQuery1 روی فرم قرار دهید. به همراه دیتاسورس و دی بی گرید به همراه یک دکمه. توی دکمه بنویسید:
procedure TForm1.Button1Click(Sender: TObject);
begin
ADQuery1.SQL.Text := 'select * from users';
ADQuery1.Open;
end;

Jarvis
یک شنبه 01 اردیبهشت 1392, 22:32 عصر
ممنون ... حالا اگه بخوایم یه داده ای رو وارد کنیم ؟؟
من کد زیر رو می نویسم خطا میده :
adqry1.SQL.Text := 'INSERT INTO USERS (ID,NAME,FAMILY) Values (7,''Test'',''Form'')';

Jarvis
یک شنبه 01 اردیبهشت 1392, 23:04 عصر
اینم تصویر خطا :
103167

tomalaki
دوشنبه 02 اردیبهشت 1392, 08:46 صبح
این دیگه ربطی به دلفی نداره. یه خطایی مربوط به پایگاه داده تون هست. کلید اصلی نامعتبر هست. حالا دیگه نمیدونم.
فقط یه چیزی، قبل از ADQuery1.SQL.Text دستور ADQuery1.SQL.Clear; هم بذار.

BORHAN TEC
دوشنبه 02 اردیبهشت 1392, 16:08 عصر
سلام
برای عملیات Insert و update و delete باید از متد ExecSQL استفاده کنید. در ضمن دادن مقادیر به اون شکل زیاد جالب نیست و خطایابی رو سخت می کنه. بهتره که از ParamByName استفاده کنید.
این هم یک مثال ساده:
with ADQuery1 do
begin
SQL.Clear;
SQL.Add('INSERT INTO COUNTRY (COUNTRY,CURRENCY)');
SQL.Add('Values (:country,:currency)');
ParamByName('country').AsString := 'IRAN';
ParamByName('currency').AsString := 'RIAL';
ExecSQL;
end;
و اما در مورد خطای این خطا

[FireDAC][Phys][IB]violation of PRIMARY or UNIQUE KEY constraint "PK_USERS" on table "USERS"
باید بگم که دلیلش اینه که یک کلید اصلی رو می خواهید در جدول ذخیره کنید که از قبل در جدول موجود است. کلید اصلی می تواند از ترکیب چند فیلد باشد. شاید هم یک ایندکس با خاصیت یکتا وجود داشته باشد که شما می خواهید مقداری از آن را در جدول تکرار کنید که این مشکل به وجود آمده است.

موفق باشید...