# Native Code > برنامه نویسی در 6 VB > مطالب مرتبط با بانکهای اطلاعاتی در VB6 > سوال: نحوه ی ارتباط دادن دو جدول DB به هم؟!

## IranVB

سلام دوستان
دوستان خیلی به کمکتان احتیاج دارم، مشکلی است که در ابتدای پروژه درگیرش بودم، اما گذاشتمش و الآن که باید برنامه رو تحویل بدم گریبانگیرم شده نمیدونم چکار کنم
من یک فرم دارم حاوی دو تا DataGrid، که اولیش نام ناشرین را لیست میکند و دومی هم لیست کتابهای ناشر انتخاب شده از لیست اول
مشکل من اینجاست که اصلا" نمیدونم چطوری اینکار رو بکنم یعنی وقتی ناشر انتخاب شد کتابهای مربوط به او در لیست دومی نشون داده بشن،
من در اکسس برای لیست ناشرین و کتابهای هر ناشر هرکدام یک تیبل جداگانه ایجاد کرده ام، یکجایی خواندم که باید از پایگاه داده رابطه ای استفاده کنم که متاسفانه چون عجله دارم اصلا" هیچ چیزی در این رابطه نفهمیدم

*اگر ممکن است کد دو مورد زیر را یکی از دستان زحمتش را بکشند به سورس اضافه کنند:*
1- دکمه ای با عنوان "افزودن جدید" که ناشرجدید را به لیست میافزاید، من میخواهم وقتی که بر روی این دکمه کلیک کردم در لیست ناشرین یک رکورد جدید ایجاد شود و لیست دوم که مربوط به ناشرجدید است خالی شود تا بتوانیم نام کتب ناشرجدید را در آن اضافه کنیم که نمیدانم چه دستوری را باید در این دکمه بنویسم (هیچ اطلاعات کافی در زمینه کار با پایگاه داده ندام)

2- و چه دستوری بنویسم که وقتی که نام ناشر از لیست اول انتخاب شد لیست همه کتابهایش را در لیست دوم نمایش دهد

خیلی خیلی از همه دوستانم ممنونم

----------


## ali190

سلام
نمونه اصلاح شد
یاعلی

----------


## hosein3000

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

----------


## ali190

سلام
لطفاً سئوال رو در قالب نمونه پروژه بیان کنید(برای زودتر رسیدن به  جواب)
ممنونم
یاعلی

----------


## IranVB

خیلی ممنون، خیلی مفید بود
یک سوال دیگر هم در همین رابطه داشتم،
چون از دوتا کنترل adodc استفاده شده است برای چاپ به چه صورت انجام دهم؟ چون اینطوری که دیدم DataReport و ActiveReport فقط یک کنترل adodc قبول میکنند؟

باتشکر

----------


## ali190

از کریستال ریپورت استفاده کن
یاعلی

----------


## kitcat_m18

سلام،
برای استفاده از اطلاعات چند جدول در قالب یک جدول می تونید از دستور Join در SQL  استفاده نمایید.
برای نشان دادن چند گزارش مختلف در یک گزارش در Active report هم از ابزار SubReport موجود در آن استفاده نمایید.
موفق باشید.  :لبخند:

----------


## hosein3000

خوب برای 20 جدول جطور؟میشه دستور رو بنویسین؟

----------


## kitcat_m18

سلام،
اگه تعداد جداولت بیشتر از 2 تا هست هم دستور Join  رو می تونی استفاده کنی اما عاقلانه تر اینه که از Query استفاده کنی.
این لینک هم برای http://msdn.microsoft.com/en-us/library/ms191430.aspx Join   
موفق باشی  :لبخند:

----------


## karimi64bit

CREATE TABLE [dbo].[parts]
(
[id] [int] NOT NULL IDENTITY(1, 1),
[parts] [nvarchar] (100) COLLATE Arabic_CI_AS NOT NULL,
[type] [nvarchar] (100) COLLATE Arabic_CI_AS NULL,
[typeid] [int] NOT NULL
)
GO
IF @@ERROR<>0 AND @@TRANCOUNT>0 ROLLBACK TRANSACTION
GO
IF @@TRANCOUNT=0 BEGIN INSERT INTO #tmpErrors (Error) SELECT 1 BEGIN TRANSACTION END
GO
PRINT N'Creating primary key [PK_parts] on [dbo].[parts]'
GO
ALTER TABLE [dbo].[parts] ADD CONSTRAINT [PK_parts] PRIMARY KEY CLUSTERED ([id])
GO
ALTER TABLE [dbo].[parts] ADD
CONSTRAINT [FK_parts_parts] FOREIGN KEY ([typeid]) REFERENCES [dbo].[parts] ([id])
GO

----------


## danialafshari

می دونم بحث قدیمیه ولی این مطلب خالی از لطف برای دوستان نیست...

اول اینکه شما باید برای بانکتون وقت بزارید و یک بانک خوب طراحی کنید بانک که خوب طراحی بشه 50% کار حله
مثلا وقتی Relation ها درست طراحی شده باشند به این صورت می شود که یک ناشر چند کتاب ممکنه داشته باشه یعنی 1 به n هست
در کد نویسی هم ابتدا در فرم ناشر مشخصات ناشر را وارد می کند و بعد ذخیره !
بعد در یک فرم دیگر به محض وارد کردن کد ناشر اطلاعات ناشر به صورت Read only نمایش داده می شوند و در زیر text box هایی میذارید که اطلاعات را در جدول کتاب ها ذخیره کند جایی که کد ناشر هست.
می بینید که همش بستگی به طراحی خوب بانک اطلاعاتی برنامه دارد. من C#‎‎ کارم و زیاد vb کار نکردم ولی توضیح کلی کار همینه
و در آخر توسط گزارش گیر ها اطلاعات مورد نیاز رو چاپ می کنه

موفق باشید

----------

