ورود

View Full Version : سوال: Insert کردن در جدولی که فیلد آن Not Allow Null



اصغر (پآچ)
چهارشنبه 01 خرداد 1387, 20:51 عصر
سلام دوستان

من میخواستم ببینم چطور میشه از توی دلفی توی یه جدول در SQL که خاصیت Allow Null رو برداشتم اطلاعات وارد کنم؟

تا از این کد استفاده می کنم میگه نمی تونه توی فیلد فلان یه مقدار null رو insert کنه!

AdoTable1.Insert;

برای رفع این مشکل چیکار کنم؟

اصغر (پآچ)
چهارشنبه 01 خرداد 1387, 21:19 عصر
این تاپیک برای کسی جذابیت نداره؟

SYNDROME
چهارشنبه 01 خرداد 1387, 22:05 عصر
ساختار جدول خود را در اینجا قرار دهید.
موفق باشید

اصغر (پآچ)
پنج شنبه 02 خرداد 1387, 00:04 صبح
سلام

اینم ساختار جدولم ممنون که کمکم می کنی انشا ا... جبران کنم

SYNDROME
پنج شنبه 02 خرداد 1387, 07:29 صبح
بر روی aDO خود Lookup زده اید؟
در رویدادهای ADO دستوراتی نوشته اید؟
موفق باشید

Amir_Safideh
پنج شنبه 02 خرداد 1387, 11:15 صبح
تا از این کد استفاده می کنم میگه نمی تونه توی فیلد فلان یه مقدار null رو insert کنه!

AdoTable1.Insert;

برای رفع این مشکل چیکار کنم؟
یعنی شما زمانی که رکورد جدید رو ایجاد میکنید این پیغام خطا رو میگیری یا زمانی که اطلاعات رو ذخیره میکنی ؟
برای ارسال یک مقدار به یک فیلد از طریق دلفی میتونید از این روش استفاده کنید :

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ADOTable1.Insert;
ADOTable1.FieldByName('Int_Test').AsInteger := 2000;
ADOTable1.FieldByName('Char_Test').AsString := 'Test value';
ADOTable1.Post;
end;

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

اصغر (پآچ)
جمعه 03 خرداد 1387, 00:50 صبح
یعنی شما زمانی که رکورد جدید رو ایجاد میکنید این پیغام خطا رو میگیری یا زمانی که اطلاعات رو ذخیره میکنی ؟
برای ارسال یک مقدار به یک فیلد از طریق دلفی میتونید از این روش استفاده کنید :

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ADOTable1.Insert;
ADOTable1.FieldByName('Int_Test').AsInteger := 2000;
ADOTable1.FieldByName('Char_Test').AsString := 'Test value';
ADOTable1.Post;
end;

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

سلام

دستت درد کنه دیگه در این حد!
ممنون از کمکتون اما من از همین روش استفاده می کنم اما تا به دستور ;AdoTable1.Insert می رسه خطا میگیره! نمی دونم چه مرگیشه

Amir_Safideh
جمعه 03 خرداد 1387, 15:38 عصر
سلام

دستت درد کنه دیگه در این حد!
اگر بین این جدول و جداول دیگر در دیتابیس ارتباطی وجود داره یکبار هم ارتباط ها رو چک کن و دوباره امتحان کن .
شما جدولتون رو با یه نام دیگه در دیتابیس شبیه سازی کن و حالا سعی کن توی این جدول جدید رکورد رو وارد کنی . اگر امتحان کردی باز هم نشد در اونصورت دیتابیست رو آپلود کن تا شاید بتونبم کمک کنیم .
-------------
موفق باشید .

babak_delphi
جمعه 03 خرداد 1387, 18:57 عصر
با استفاده از ADOCommand و دستور Insert Into اطلاعات را وارد کنید

اصغر (پآچ)
دوشنبه 06 خرداد 1387, 13:51 عصر
ممنون از لطفتون مشکل حل شد

SYNDROME
دوشنبه 06 خرداد 1387, 16:42 عصر
ممنون از لطفتون مشکل حل شد
اگر امکان دارد دلیل ایجاد این مشکل را بنویسید تا دوستان دیگر هم اگر برخوردند بتوانند حل کنند.
موفق باشید

اصغر (پآچ)
سه شنبه 07 خرداد 1387, 20:25 عصر
سلام
من از یه AdoQuery که دو تا جدول رو با هم جوین کرده بود استفاده کرده بودم و وقتی از دستور:

AdoQuery1.Edit;
استفاده کردم به اون خطا برخورد می کردم (اصلا قصد اضافه کردن رکورد جدید هم نداشتم اما این پیغام داده می شد.)

اما برای رفعش رفتم یه AdoQuery دیگه رو فعال کردم که بیاد جدول دوم رو با شماره جدول اول جستجو کنه که مشکلم با این روش حل شد.

حالا اگه راه بهتری داری من خوشحال می شم که بکار بگیرمش!

SYNDROME
سه شنبه 07 خرداد 1387, 21:04 عصر
با اعلام دستور زیر به ADO مشخص کنید که کل تغییرات را بر روی کدام Table انجام دهد.


ADO.Open;
ADO.Properties['Unique Table'].Value := TableName;

TableName : نام جدول که تغییرات باید روی آن انجام شود.
موفق باشید

اصغر (پآچ)
پنج شنبه 16 خرداد 1387, 01:21 صبح
با اعلام دستور زیر به ADO مشخص کنید که کل تغییرات را بر روی کدام Table انجام دهد.


ADO.Open;
ADO.Properties['Unique Table'].Value := TableName;

TableName : نام جدول که تغییرات باید روی آن انجام شود.
موفق باشید

دوست من
با این روشی که گفتی به Tablename گیر میده چیکارش کنم؟

SYNDROME
پنج شنبه 16 خرداد 1387, 07:01 صبح
دوست من
با این روشی که گفتی به Tablename گیر میده چیکارش کنم؟
دستور را چظور نوشته اید؟
این هم یک مثال کاملتر :


ADO.SQL.Clear;
ADO.SQL.Add(' Select *');
ADO.SQL.Add(' From Tbl_Test1 T1');
ADO.SQL.Add(' Inner Join Tbl_Test2 T2');
ADO.SQL.Add(' On T1.ID = T2.ID');
ADO.Open;
ADO.Properties['Unique Table'].Value := 'Tbl_Test1';

دقت کنید Unique Table را برابر نام جدولی قرار دادم که می خواهم عملیات بر روی آن انجام شود.
موفق باشید