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

نام تاپیک: ساخت لیست باکس از روی یک ستون خاص AdoQuery

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    پست
    68

    Question ساخت لیست باکس از روی یک ستون خاص AdoQuery

    من قبلا یه کد دیده بودم که الان یادم نمیاد
    خیلی هم توی تاپیک ها گشتم ولی پیدا نکردم
    اگه راهنمائیم کنید ممنون میشم
    1)چه جوری میتونم به استفاده از یک دستور یک ستون از یک کوئری رو در یک Listbox یا TStrings ذخیره کنیم ؟
    بدون استفاده از حلقه تکرار
    چون ممکنه فرم من چندین بار پشت سر هم فراخوانی بشه و منطقی نیست که برای آپدیت کردن لیست باکسم از حلقه تکرار استفاده کنم

    یه چیزایی شبیه به
     ListBox1.Item.LoadfromStream()

    فقط نمیدونم چه جوری تمام مقادیر ستون مثلا عنوان رو در یک استریم قرار بدم
    و


    2) اینکه آیا راهی هست که بصورت یکجا و نا با حلقه تکرار لیست باکسی با استفاده از ویژگی آبجکت بسازم که کد و عنوان (از همون کوئری) رو توش داشته باشم و با انتخاب عنوان کد رو توی DB ذخیره کنم ؟

  2. #2
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    پست
    68

    نقل قول: ساخت لیست باکس از روییک ستون خاص AdoQuery

    یعنی هیچ کس نیست به این سوال من جواب بده ؟

  3. #3
    کاربر دائمی آواتار M_Maskout
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    تهران
    سن
    45
    پست
    150

    نقل قول: ساخت لیست باکس از روییک ستون خاص AdoQuery

    سلام
    شما باید از یه کنترل آگاه از داده (Data aware control) استفاده کنید.
    از برگه (Tab)،‏ Data Access یه DataSource (5.PNG) به فرمتون اضافه کنید.
    نام آبجکتی که جدول شما رو کنترل می‌کنه تو ویژگی DataSet قرار بدین.

    Data aware controlها رو می‌تونید از برگه Data Controls به دست بیارین.
    از برگه (Tab)، ‏Data Controls، یه DBLookupListBox (4.PNG)به فرمتون اضافه کنید.
    ویژگی ListSource رو با نام DataSource ایجاد شده (مثلاً DataSource1) تنظیم کنید.
    ویژگی KeyField رو با نام فیلد مورد نظرتون تنظیم کنید.
    با Active کردن کنترل جدول، محتویات فیلد مورد نظر از تمام رکوردها، لیست می‌شود.

  4. #4
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    پست
    68

    نقل قول: ساخت لیست باکس از روییک ستون خاص AdoQuery

    نقل قول نوشته شده توسط M_Maskout مشاهده تاپیک
    سلام
    شما باید از یه کنترل آگاه از داده (Data aware control) استفاده کنید.
    از برگه (Tab)،‏ Data Access یه DataSource (5.PNG) به فرمتون اضافه کنید.
    نام آبجکتی که جدول شما رو کنترل می‌کنه تو ویژگی DataSet قرار بدین.

    Data aware controlها رو می‌تونید از برگه Data Controls به دست بیارین.
    از برگه (Tab)، ‏Data Controls، یه DBLookupListBox (4.PNG)به فرمتون اضافه کنید.
    ویژگی ListSource رو با نام DataSource ایجاد شده (مثلاً DataSource1) تنظیم کنید.
    ویژگی KeyField رو با نام فیلد مورد نظرتون تنظیم کنید.
    با Active کردن کنترل جدول، محتویات فیلد مورد نظر از تمام رکوردها، لیست می‌شود.
    دوست عزیز این راه حل ساده و ابتدایی رو بلدم ولی این کنترل ها زمانی کار می کنند که شما اونارو به یه فیلد اختصاص بدید یعنی اینکه حتما باید مقدار انتخاب شده بطور خودکار به فیلد مقصد ارسال بشه
    ولی منظور من اینه که بعنوان مثال مقادیر یک ستون از جدولم رو توی یه Tstrings داشته باشم تا بتونم به Pickup هام اختصاص بدم

  5. #5

    نقل قول: ساخت لیست باکس از روی یک ستون خاص AdoQuery

    می تونید فیلد Lookup داشته باشید. در ضمن، اینکه شما در کد خودتون حلقه تکرار نداشته باشید، و به جاش فقط یک خط کد داشته باشید، به معنی این نیست که حلقه ایی در کار نباشه!


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  6. #6
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    پست
    68

    نقل قول: ساخت لیست باکس از روی یک ستون خاص AdoQuery

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

  7. #7

    نقل قول: ساخت لیست باکس از روی یک ستون خاص AdoQuery

    یادمه که یه دستوری بود که همه مقادیر یک ستون از یک جدول رو در یک استرینگ درج میکرد
    همچین دستوری در دلفی وجود نداره. اصلا دلفی دستوری برای کار با بانک اطلاعاتی نداره، بلکه یک سری تابع و کلاس برای کار با بانک داره.

    توابع هم دو حالت دارند، یا از بانک مستقیما کوئری می گیرند، یا اینکه دیتاست رو پیمایش می کنند، که در صورت پیمایش، میشه همون حلقه، فقط فرق اش اینه که شما حلقه رو نمی بینید، و فکر می کنید کد شما بدون حلقه کار کرده!


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  8. #8
    کاربر دائمی
    تاریخ عضویت
    دی 1387
    محل زندگی
    تهران
    پست
    106

    نقل قول: ساخت لیست باکس از روی یک ستون خاص AdoQuery

    نقل قول نوشته شده توسط علی کشاورز مشاهده تاپیک
    همچین دستوری در دلفی وجود نداره. اصلا دلفی دستوری برای کار با بانک اطلاعاتی نداره، بلکه یک سری تابع و کلاس برای کار با بانک داره.

    توابع هم دو حالت دارند، یا از بانک مستقیما کوئری می گیرند، یا اینکه دیتاست رو پیمایش می کنند، که در صورت پیمایش، میشه همون حلقه، فقط فرق اش اینه که شما حلقه رو نمی بینید، و فکر می کنید کد شما بدون حلقه کار کرده!
    بدون حلقه هم میشه این کار را انجام داد، اما همانگونه که آفای کشاورز فرمودند نه در سطح دلفی که در سطح SQL. یعنی یک کوئری استفاده کنیم که داده های فیلد مورد نظر رو به صورت مدنظر برگردونه. برای این کار از کد زیر برای کوئری استفاده می کنیم.
    SELECT CONVERT(nvarchar(max), field_name) + CHAR(13) + CHAR(10) AS [text()] 
    FROM table_name WHERE (1 = 1) for xml path('')

    قسمت WHERE رو هم درج کردم که بدونید باید کجا بگذاریدش
    این دستور در واقع برای تولید یک فایل xml از روی داده ها بکار می رود. برای نمونه هنگامی که می خواهید داده های جدولی را در پی یک درخواست xmlrpc یا soap برگردانید برای اینکه درد و خونریزی نداشته باشد باید از این روش بهره گیرید. کنون ما با کمی دستکاری، کاری کرده ایم که مولفه های xml حذف شوند و نتیجه شبیه یک متن ساده در آید.
    از آنجا مقدار برگشتی این دستور در ADO از نوع ADOStream می باشد برای دریافت محتوای آن در دلفی نیز از متد زیر بهره بگیرید:
    function SQLtoXML(Conn: TADOConnection; SQLCmd: string): string;
    const
    adExecuteStream = 1024;
    var
    Command: _Command;
    Stream: OleVariant;
    RecordsAffected: OleVariant;
    Parameters: OleVariant;
    begin
    Command := CreateOleObject('ADODB.Command') as _Command;
    Command.Set_ActiveConnection(Conn.ConnectionObject );
    Command.CommandType := ADOInt.adCmdText;
    Command.CommandText := SQLCmd;
    Stream := CreateOleObject('ADODB.Stream');
    Stream.Open;
    Command.Properties['Output Stream'].Value := Stream;
    Parameters := EmptyParam;
    Command.Execute(RecordsAffected, Parameters, adExecuteStream);
    Stream.Position := 0;
    Result := Stream.ReadText;
    end;
    آخرین ویرایش به وسیله a_mosavian : چهارشنبه 17 فروردین 1390 در 22:05 عصر دلیل: متد ADO

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

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