ورود

View Full Version : حرفه ای: تغییر خاصیت tablename شی adotable در برنامه



naeemeh
جمعه 15 اردیبهشت 1391, 08:11 صبح
سلام ، من در برنامه خودم چون تعداد جدول ها حدود 30 عدد است در فرم هایی که اطلاعات پایه را در آن ها تعریف می کنم از روشی که مستقیم به dbedit اتصال پیدا می کند و عمل insert و edit را انجام می دهم ، حالا در datamodule یک adotable و یک datasource تعریف کردم و در onactive یا onshow فرمم می آیم این دستورات را می نویسم :'
dm1.Atblapp.Cancel;
dm1.Atblapp.Active:=False;
dm1.Atblapp.Close;
dm1.Atblapp.FieldList.Clear;
dm1.Atblapp.TableName:='';
dm1.Atblapp.TableName:='اسم جدول';

در فرم اولی که ایجاد شده (به عبارتی اجرا کردم ) هیچ مشکلی ندارم ولی در فرم های بعدی هنگام open کردن جدول به دنبال فیلدهایی که در dbedithaye فرم های قبلی است می گردد . با توجه به اینکه من جدول را هنگام formclose و هنگام onactive فرم هام می بندم .
چطور می توانم مشکلم را حل کنم.

mohsen24000
جمعه 15 اردیبهشت 1391, 09:32 صبح
کافیه تیبل رو close کرده و سپس TableName رو مقدار جدید داده و سپس هنگام نیاز open کنید.
مابقی دستوراتی که در بالا ذکر کردید اضافی به نظر می رسه!


with dm1 do begin
Atblapp.Close;
Atblapp.TableName:='اسم جدول';
Atblapp.Open;
end;

naeemeh
جمعه 15 اردیبهشت 1391, 09:42 صبح
ممنون از پاسختون ولی مشکل من اینجاست که من از dbedit روی فرم هام استفاده کردم و وقتی یک فرم باز می شود هیچ مشکلی وجود ندارد ولی وقتی آن فرم را می بندم و فرم بعدی باز می شود به دنبال فیلدهای فرم اول می گردد. در صورتیکه که من در فرم اول close کردم.

zidane
جمعه 15 اردیبهشت 1391, 15:19 عصر
اگه از طريق دوبار كليك كردن روي AdoTable فيلدهاي جدول رو بهش اضافه كرديد همشونو پاك كنيد.

naeemeh
جمعه 15 اردیبهشت 1391, 16:43 عصر
نه این کار را هم نکردم و واقعاً دلیلش را متوجه نمی شوم . حتی datasource را close کردم ولی فرقی نکرد.

naeemeh
چهارشنبه 20 اردیبهشت 1391, 11:48 صبح
با سلام ، مشکلم حل شد به این صورت که در form.close مقدار datafield هر کدام از dbedite ها را خالی کردم.