PDA

View Full Version : مشکل در ذخیره AdoTable



MOHSEN731
جمعه 30 اردیبهشت 1384, 16:34 عصر
با سلام
من وقتی چند بار در یک AdoTable رکوردهایم را ویرایش میکنم ناگهان دو خطای زیر نشان می دهد دوستان راه حل این مشکل چیست (خیلی خیلی حیاتی و فوری)
ممنون از لطفتون

V60
جمعه 30 اردیبهشت 1384, 19:10 عصر
سلام
من هم این مشکلات را داشتم
ببینم با اکسس کار می کنی
من مشکلم را با تعریف یک فیلد کلیدی حل کردم
ضمنا در فیلد کلیدی هم از حروف فارسی استفاده نکن که گیر می ده
اگر اینجوری که گفتم نیست
یک کم بیشتر درباره فیلدهایت توضیح بده و کاری که می خواهی انجام بدهی تا اساتیدی که هستند به شماکمک کنند.

hamidrezaA
جمعه 30 اردیبهشت 1384, 21:32 عصر
کاملا با نظرت موافقم ایراد به دلیل عدم وجود کلید اصلی در پایگاه داده
Access می باشد.

MOHSEN731
شنبه 31 اردیبهشت 1384, 09:56 صبح
با تعریف فیلد کلیدی مشکل چند تا از بانکهایم حل شد ولی بعضی از اونهایی که فیلد کلیدی دارند هم گاهی اوقات همین خطاها را میزند . فیلدها هم از نوع عددی و متنی ساده است و چیز خاصی ندارد .

V60
شنبه 31 اردیبهشت 1384, 10:13 صبح
ببین , در اکسس وقتی به یک فیلد کلیدی حرفی را نسبت می دهی ( مخصوصا فارسی) بعضی وقتها , دقت کن بعضی وقتها گیر می دهد
بررسی کن و یک مقداری بیشتر توضیح بده

javidtaheri
شنبه 31 اردیبهشت 1384, 11:06 صبح
جدول ها را Repair کن شاید مشکلات جدول حل شود :kaf:

MOHSEN731
یک شنبه 01 خرداد 1384, 10:01 صبح
برای فیلد کلیدی من هیچ چیزی جز عدد تعریف نشده است من وقتی میخواهم با یک حلقه مثلا یک مقدار را به چند رکورد بدهم این خطاها را می زند .

alidll
یک شنبه 01 خرداد 1384, 10:42 صبح
شاید چندتا از فیلدهای کلیدی مقدار یکسان می گیرند؟؟؟

vcldeveloper
دوشنبه 02 خرداد 1384, 03:33 صبح
این سوال قبلا پرسیده شده بود...
http://www.barnamenevis.org/forum/viewtopic.php?t=3889

http://www.barnamenevis.org/forum/viewtopic.php?t=17934

MOHSEN731
چهارشنبه 04 خرداد 1384, 10:18 صبح
من خودم موقتا تابع زیر را نوشتم و مشکلم کاملا حل شد. سورس تابع را اینجا می گزارم اگه بدرد کسی خورد استفاده کنه:

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


procedure TDM.AdoTable1PostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
Update_Records(DataSet);
end;


function Update_Records(DataSet:TdataSet):bool;
var I:integer; StringList:TStringList;
begin
StringList:=TStringList.Create; StringList.Clear;
with DataSet do
begin
{before Cancel}
FieldDefList.Update;
for I := 0 to FieldDefList.Count-1 do StringList.Add(FieldByName(FieldDefList.Strings[I] ).AsString);

DataSet.Cancel;
DataSet.Refresh;
DataSet.Edit;
{after Cancel}
for I := 0 to FieldDefList.Count-1 do try FieldByName(FieldDefList.Strings[I]).AsString:=Str ingList.Strings[i]; except end;
DataSet.Post;
end;
StringList.Free;
end;