PDA

View Full Version : سوال: دی بی گرید متصل به جدول دیتیل



tik_tak
پنج شنبه 25 مهر 1387, 22:51 عصر
با سلام
من دوتا جدول دارم یکی مستر یکی دیتیل

تو جدول دیتیل اومدم خاصیت
مسترسورس=دیتاسورس مستر
مسترفیلد=فیلدمشترک این دوتا

اول تو مستر اینزرت میکنم
بعدم تو دیتیل

یه دی بی گریدم گذاشتم که رکوردایه جدول دیتیلمو نشون بده (گریدم به دیتیل وصله)
ولی همیشه این دی بی گریده رکوردایه مربوط به آخرین رکورد مسترمو نشون میده :
مثلا فاکتور شماره11 (جدول مستر)
ریزفاکتور(جدول دیتیل)
1-جنس شماره فلان
2-
3-
.
.

وقتی که یه اینزرت دیگه تو مستر اتفاق میفته حالا اینا از دی بی گرید پاک میشن و کالاهای جدیدی که اضافه میشه نشون داده میشه

میخوام یه دکمه داشته باشم که وقتی روش کلیک میکنی دی بی گریدمو پاک کنه ولی اینزرت تو مستر اتفاق نیفته

merced
شنبه 27 مهر 1387, 18:13 عصر
اينجوري که گفتي هيچ کار نميشه برات کرد. برنامه ات رو بذار

AFTABGARDAN2006
شنبه 27 مهر 1387, 20:38 عصر
حمالاً نام فیلد کلید مستر رو اشتباه انتخاب کردی چون اگه ارتباط درس باشد اطلاعات Detail مربوط به مستر رو فقط نشون می ده و اگر اطلاعات مرتبطی با مستر نباشد دتیل رو خالی نشون می دهد.

Amir_Safideh
شنبه 27 مهر 1387, 21:10 عصر
ببین دوست عزیز . خاصیت گرید اینه که اطلاعاتی رو نمایش میده که در دیتاسورس وجود داره . و عملا مادامی که ارتباط بین گرید و دیتاسورس وجود داره اطلاعات دیتاسورس نمایش داده میشه . بهتره بگید که دقیقا این کار رو برای چی لازم داری که انجام بدی شاید بشه پیشنهاد بهتری داد .
------------
موفق باشید .

delphiprog3000
یک شنبه 28 مهر 1387, 14:58 عصر
با سلام
من دوتا جدول دارم یکی مستر یکی دیتیل

تو جدول دیتیل اومدم خاصیت
مسترسورس=دیتاسورس مستر
مسترفیلد=فیلدمشترک این دوتا

اول تو مستر اینزرت میکنم
بعدم تو دیتیل

یه دی بی گریدم گذاشتم که رکوردایه جدول دیتیلمو نشون بده (گریدم به دیتیل وصله)
ولی همیشه این دی بی گریده رکوردایه مربوط به آخرین رکورد مسترمو نشون میده :
مثلا فاکتور شماره11 (جدول مستر)
ریزفاکتور(جدول دیتیل)
1-جنس شماره فلان
2-
3-
.
.

وقتی که یه اینزرت دیگه تو مستر اتفاق میفته حالا اینا از دی بی گرید پاک میشن و کالاهای جدیدی که اضافه میشه نشون داده میشه

میخوام یه دکمه داشته باشم که وقتی روش کلیک میکنی دی بی گریدمو پاک کنه ولی اینزرت تو مستر اتفاق نیفته


با سلام .

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

و دیتیل خود را بر اساس کد یا یک خصوصیت خاص مستر خود مرتب نمایید.

tik_tak
شنبه 04 آبان 1387, 18:37 عصر
باسلام و تشکر ازهمه
ببینید من سوالمو شاید خوب توضیح ندادم

من تومستر اینزرت میکنم بعد میرم و در دیتیل ام اینزرت میکنم تا اینجا درست ...
وقتی ام اون فلش یا همون اشاره گر دی بی گرید متصل جدول مستر حرکتش میدم تودی بی گرید متصل به جدول دیتیلم ریزخریدهای اون شماره فاکتو رو نشون میده :

شماره فاکتور 1 (دی بی گرید 1)
-----------------------
ریز فاکتور مربوط به شماره فاکتور 1 (دی بی گرید 2)
جنس1
جنس2
.
.

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

ودی بی گرید وصله به دیتیلم هم ریز خریدهای همین فاکتور جاری رو نشون میده

خب فاکتور شماره 1 کارش تموم میشه حالا باید بریم سراغ فاکتور شماره 2

تا وقتی که تو مستر اینزرت نکنم(همون شماره فاکتور2) این دی بی گرید متصل به دیتیل هم چنان ریز خریدهای مربوط به فاکتور شماره1 رو نشون میده ...اینم به نظر خودم درسته چون اشاره گر یا هرچیزی (که اسمش من نمیدونم) رو آخرین رکورد مسترمه که اونم یعنی شماره 1 به همین دلیلم تو دیتیل اطلاعاتش نشون داده میشه

میخوام یه دکمه بزارم به اسم فاکتور جدید که وقتی ثبت فاکتور شماره 1 تموم شد روش کلیک بکنی و این دی بی گرید متصل به دیتیل رو پاکش کنه
حالا اطلاعات مربوط به مستر رو وارد کنی و بقیه ماجراها
و به نظر خودم اینم چاره ای نداره جز اینکه تو مستر اون اشاره گر رو بیاری یه رکورد پایین تر یعنی یه جورایی next ش کنی و بیاریش رو یه رکورد خالی یعنی رکورد بعد از شماره 1 ، تا دی بی گریدم دومم نیز خالی نشون داده بشه

سوال من اینه :
اگه من اینو next ش کنم بعد بیام اینزرت کنم(تو مستر منظورمه) خود اینزرتم فک کنم خودکار یکی next میکنه اون وقت این وسط یه رکورد خالی تو مستر نداریم ؟؟؟؟

امیدوارم منظورمو رسونده باشم

oghab
شنبه 04 آبان 1387, 19:18 عصر
سلام
شما چطوري عمل insert را انجام ميدي؟
با كد نويسي؟
اگه از dbnavigator استفاده بكني كه با زدن دكمه insert خودش فيلدها را خالي ميكنه.
نميدونم اين روشي كه من ميگم ابتدايي يا نه. ولي من باشم اين كار را ميكنم
يعني حتي اگه نمي خواي dbnavigator روي فرم داشته باشي. يكي بزار و به datasource اولي ات وصلش كن و خاصيت visible ش را false كن تا پيدا نباشه.
بعد دكمه فاكتور جديد را بزار و تو رويداد كليكش بنويس dbnavigator.btnclick(nbinsert)
dbnavigator.btnclick(nbinsert)
اين باعث ميشه در دي بي گريد master ت يه سطر جديدي ايجاد بشه و در دي بي گريد detail هم خالي بشه
موفق باشي

tik_tak
شنبه 04 آبان 1387, 20:12 عصر
درسته
اینجوری دستورات اینزرت رو مینویسم :


datamadoule1.table_master.insert;
.
.
datamadoule1.table_master.post;

راه شمام جالب بود
منظورتون این کده ؟؟؟


dbnavigator1.btnclick(nbinsert);