ورود

نسخه کامل مشاهده نسخه کامل : ارتباط بین جدارول دلفی با بانک sql



P A R M I S
25-10-2008, 09:08
با سلام
می شه نحوه ارتباط بین دو جدول رو با استفاده از یک فیلد مشترک مثل id که در هر دو جدول وجود دارند و از یک نوع هستند رو بگید (دلفی و بانک sql) و اینکه نوع بانک در نحوه اتصال جداول تاثیری دارد یا نه ؟

F A R H A D
26-10-2008, 11:41
سلام. master/detail رو جستجو كنيد

نوع بانک در نحوه اتصال جداول تاثیری دارد یا نه ؟
اگر اتصال رو با دلفي انجام ميديد خير تاثيري نداره

Hadi_0261
26-10-2008, 12:36
ابتدا باید ارتباط بین 2 جدول رو مشخص کنید که چه را بطه ای دارند . اگر از نوع 1 به N بودند اونوقت یه کلید خروجی از یک جدول تو جدول دیگه ایجاد می کنی . اگه جزئیاتش رو نمیدونی بگو تا بنویسیم .

P A R M I S
26-10-2008, 13:03
ارتباط بین جداولم 1 به 1 است

F A R H A D
26-10-2008, 13:20
ارتباط يك به يك رو بهتره كنار بگذاريد و تمام فيلدها رو در يك جدول ادغام كنيد. دليل خاصي براي اين كار داريد؟

P A R M I S
26-10-2008, 14:41
دلیل اصلی اش رو خودم هم نمی دونم آخه اومدم کمک خواستم این پیشنهاد رو دادن آخه من می خوام از دو جدولی که دارم افرادی که اطلاعات اونها در جدول اولی ام درج شده و در جدول دوم بعنوان کارمند مشخص شده اند انتخاب شوند و در دی بی گرید نشون داده بشن (یعنی اونهایی رو که در دی بی گرید می خواد نشون بده اونهایی هستند که نامشان مثلا علی احمدی از جدول اول ودر جدول دوم هم بعنوان کارمند مشخص شده اند )

F A R H A D
26-10-2008, 14:46
آخه اومدم کمک خواستم این پیشنهاد رو دادن
شما كه اينقدر به پيشنهادات گوش ميكنيد، پيشنهاد پست قبلي من رو انجام بديد ضرري نداره
در غير اينصورت master/detail براي كار شما راه حل نيست
يك كوئري بگيريد و بوسيله اون كوئري خيلي راحت از اطلاعات join شده استفاده كنيد

Hadi_0261
27-10-2008, 08:47
من دقیقا متوجه نشدم که شما می خوای چه کاری انجام بدی ولی یه چیز کلی در رابطه با ارتباط جداول می نویسم . فرض کن 2 تا جدول داری . جدول student و teacher میگیم هر دانش آموز 1 معلم داره ولی هر معلم میتونه چندین دانش آموز داشته باشه . پس این میشه یک رابطه 1 به چند . تو این رابطه باید یه فیلد به اسم FK_Teacher تو جدول Student ایجاد کنیم و تو ریلیشن شیپ SQL Server کلید اصلی جدول معلم رو به FK_Teacher تو جدول دانش آموز وصل کنیم . اما اگر دو جدولمون هیچ ربطی به هم نداشته باشند این کار رو نمی کنیم . اگر شما می خوای موارد خاصی از دو جدولی که به هم ربطی ندارند رو توی Gtid نشون بدی بهتره که با استفاده از دستورات SQL یه Query بنویسی و اون رو به Grid وصل کنی .

P A R M I S
27-10-2008, 20:19
من هم در sql اومدم بین دو جدولم ارتباط برقرار کرده ام و همونطور که شما گفتین از join استفاده کردم ولی مشکلی که دارم اینه که برای فیلدهایی که عدد هست درست عمل می کنه اما برای فیلدهایی مانند نام درست عمل نمی کنه به عنوان مثال از دستور زیر استفاده کرده ام
adoquery1.SQL.Clear;
adoquery1.Close;
adoquery1.SQL.Add('SELECT tteacher.karmand , ttclock.datet, ttclock.a1t FROM ttclock left outer JOIN tteacher ON ttclock.ido = tteacher.ido WHERE tteacher.tel=11111 ');
adoquery1.Open;

که دستور بالا درست جواب می ده اما اگه از دستور زیر استفاده کنم پیغام خطا می ده

adoquery1.SQL.Clear;
adoquery1.Close;
adoquery1.SQL.Add('SELECT tteacher.karmand , ttclock.datet, ttclock.a1t FROM ttclock left outer JOIN tteacher ON ttclock.ido = tteacher.ido WHERE ttclock.name like "'+edit5.text+'"');
adoquery1.Open;

در این دستور حتی به جای edit5 هم نام را قرار می دم اما درست جواب نمی ده به جای edit5 از چی استفاده کنم تا درست جواب بده (دلفی با بانک sql ) بین دو جدول با استفاده از فیلد مشترک ido هم همونطور که مشخصه ارتباط برقرار کرده ام

Hadi_0261
29-10-2008, 08:38
دوست عزيز . اگر بانك شما SQL هست بهتره از كامپونت هاي SDAC استفاده كنيد . در ضمن تو دستوري كه براي حروف مي نويسيد و خطا ميده به اين دليله كه بايد تبديل به String بشه چون اين دستور String قبول ميكنه . در ضمن بهتره كه شما يه Query بنويسيد و با يه دستور Grid رو به اون Query وصل كنيد تا اينكه اين همه كد بنويسيد .