نمایش نتایج 1 تا 11 از 11

نام تاپیک: یکجا کردن مقادیر مختلف یک ستون در یک فیلد

  1. #1

    یکجا کردن مقادیر مختلف یک ستون در یک فیلد

    یک سوال درباره بانک اکسس دارم که بهتر است با مثال بگم

    فرض کنید

    یک جدول داریم که شامل دو ستون نام و نام خانوادگی است.در این لیست نام تعداد زیادی آدم هم ثبت شده است که میتواند در اسم و فامیل و یا هردو با هم برابر باشند.

    ما میخواهیم بوسیله ی این جدول جدول دیگری بسازیم که باز هم دو ستون دارد. با این تفاوت که
    1- ستون اول شامل تمام نام های فامیلی جدول اول بدون تکرار باشد
    2-در ستون دوم در مقابل هر نام فامیل کلیه اسم هایی که طبق جدول اول دارای آن فامیلی هستند بدون تکرار و با یک علامت جداساز (مثلا " یا - ) قرار داشته باشد.

    این کار را آیا با کُوِری میشه انجام داد یا باید کد نویسی کرد.

    سپاسگذار خواهم بود اگر دوستی پاسخ گوید ویا کمک کند

  2. #2
    این قسمت رو متوجه شدم:
    نقل قول نوشته شده توسط hariva مشاهده تاپیک
    یک جدول داریم که شامل دو ستون نام و نام خانوادگی است.در این لیست نام تعداد زیادی آدم هم ثبت شده است که میتواند در اسم و فامیل و یا هردو با هم برابر باشند.

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

    نقل قول نوشته شده توسط hariva مشاهده تاپیک
    2-در ستون دوم در مقابل هر نام فامیل کلیه اسم هایی که طبق جدول اول دارای آن فامیلی هستند بدون تکرار و با یک علامت جداساز (مثلا " یا - ) قرار داشته باشد.
    چون اگه بخواهی اسمهای متفاوت داشته باشی خوب هر رکوردت شامل یک اسم و یک فامیل میشه و دوباره فامیل های تکراری خواهی داشت
    اگه ممکنه سوالت رو واضح تر بپرس
    متشکرم

  3. #3
    فر کنم راه حل بهتر هم داشته باشه ولی با در نظر گرفتن 2 تا رکوردست تو در تو و پیمایش آنها برای ساخت رشته مشکلت حل بشه.
    رشته بیرونی
    SELECT Contacts.LastName FROM Contacts GROUP BY Contacts.LastName

    رشته درونی
    SELECT Contacts.FirstName FROM Contacts GROUP BY Contacts.FirstName, Contacts.LastName HAVING (((Contacts.LastName)=@para))

    که در اینجا بجای @para باید مقدار lastname جاری در رکردست بیرونی قرار گیرد

  4. #4
    با تشکر از MM_Mofidi

    باید کد های ایشان را امتحان کنم (راستش زیاد از VBA و SQL سر در نمی آورم)

    جهت رفع ابهام

    من میخواهم این جدول

    "فرامرز" "تمنا"
    "علیرضا" "ابراهیمی"
    "بهنام" "جواد شعار"
    "متین" "تمنا"
    "پرویز" "تمنا"
    "جلال" "ابراهیمی"
    "بهنام" "جواد شعار"

    به جدول زیر تبدیل شود

    "تمنا" "فرامرز/متین/پرویز"
    "ابراهیمی" "علیرضا/جلال"
    "بهنام" "جواد شعار"


  5. #5
    من به کمک کد های دوستمان این برنامه را در ویبی دات نت نوشتم و کار میکند.اما تنها مشکلی که دارد این است که اگر فیلدی دارای علامت " ' " باشد در کار برنامه خلل وارد میکند.



    Dim i As Integer
    Dim j As Integer
    Dim nms as string


    'OpenDbCon()
    CNN.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;Data Source='D://db1.mdb'"
    CNN.Open()


    DA1 = New OleDb.OleDbDataAdapter(SELECT Contacts.LastName FROM Contacts GROUP BY Contacts.LastName, CNN)
    DA1.Fill(DS)


    dt = DS.Tables(0)
    dt.Columns.Add("names")

    For i = 0 To dt.Rows.Count - 1
    dr = dt.Rows(i)

    DA2 = New OleDb.OleDbDataAdapter("SELECT Contacts.FirstName FROM Contacts GROUP BY Contacts.FirstName, Contacts.LastName HAVING (((Contacts.LastName)='" & dr.Item(0) & "'))", CNN)
    DA2.Fill(DS2)

    For j = 1 To DS2.Tables(0).Rows.Count
    nms = nms & "/" & DS2.Tables(0).Rows(j - 1).Item(0)
    Next

    nms = Mid(nms, 2)

    dr.Item(1) = nms

    DS2.Tables(0).Clear()
    nms = ""

    Next


    DataGrid1.DataSource = DS



  6. #6
    خوب مشکلی ندارد که خط قبل از DA2 = New OleDb یک خط اضافه کن و در آن مقدار dr.Item(0) را در یک متغیر بریز و کاراکترهای بیربط یا مشکل ساز را با نمونه بی خطر جایگزین یا حذف کن ;-)

  7. #7
    با سلام
    من هم چنین مشکلی دارم ؟
    ولی در vb کدنویسی کردم ، کدنویسی من تقریبا شبیه کدنویسی شما در دات نت است ولی هنگام اتصال به بانک و کار روی آرایه برای من خطا می گیرد ؟
    به جز این راه حل راه دیگه ای وجود نداره ؟
    مثلا اگه از کدنویسی در بانک استفاده کنیم در view ها ؟

  8. #8
    فکر کنم از کرسر بتونی استفاده کنی شایدم با فراخوانی تو در تو نمیدونم باید روش فکر کنی.
    ولی در vb هم به راحتی از همین روش میشه استفاده کرد در حال حرکت روی رکوردست بیرونی تمام رکوردهای رکوردست داخلی را پیمایش کن.

  9. #9
    نقل قول نوشته شده توسط MM_Mofidi مشاهده تاپیک
    در حال حرکت روی رکوردست بیرونی تمام رکوردهای رکوردست داخلی را پیمایش کن.
    میشه یک مثال بذارین
    ممنون

  10. #10
    کاراکتر مشکل ساز خود " ' " است.وقتی کلمه ای دارای این کاراکتر باشد چون در آن کد sql از همین علامت برای نشان دادن ابتدا و انتهای مقدار استفاده شده مابقی متن بعد از ' یک چیز اضافه و ارور سازی است. همانطور که میدانید این مشکل به مقوله ی جستجو بوسیله ی sql ربط دارد و کلی است. من این کار را بدون قرار دادن این علامت در ابتدا و انتهای عبارت انجام دادم نتیجه ای جز ارور نداشت.


  11. #11
    نقل قول نوشته شده توسط MM_Mofidi مشاهده تاپیک
    خوب مشکلی ندارد که خط قبل از DA2 = New OleDb یک خط اضافه کن و در آن مقدار dr.Item(0) را در یک متغیر بریز و کاراکترهای بیربط یا مشکل ساز را با نمونه بی خطر جایگزین یا حذف کن ;-)
    دیدی خوب دقت نکردی ' را با '' جابجا کن (یه دونه با دوتا)

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •