ايران ويج

نسخه‌ی کامل: نمايش پيغام در صورت ورود مقادير تکراري + ليست کردن يک فيلد در کمبو باکس1
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
با سلام عرض به همه دوستان. دو تا سوال کوچيک داشتم . توي يه برنامه اي(با ado) که سه تا فيلد داره (نام ، نام خانوادگي و معدل) . ميخواستم :

مثلا dbcombobox1 رو به فيلد نام متصل کردم و با يه حلقه مقادير فيلد نام رو دونه دونه توش اضافه کردم.وقتي دکمه insert رو ميزنم مثلا اگه اسم علي قبلا وارد شده بود و ما دوباره اين اسم رو بديم پيغام بده و به کاربر اجازه اضافه کردن اين مقادير تکراري رو نده.

و سوال بعدي هم اينه که وقتي يه مقادير جديد رو به درستي تکميل کردم و به بانک insert شد همون لحظه در ليست آيتم کومبوباکس به طور خودکـــــــار اضافه بشه.(براي نمايش در حالت autocompelete و autodropdown کمبوباکس)
کد حلقه رو براي خوندن از فيلد نام و اضافه کردن اون در کمبو باکس کجا اضافه بکنم؟؟

متشکرم
دوستان کسی نظری داره؟
جواب1:
شما میتونین یک جستجوگر بنویسین که لیست شما رو پیمایش کنه و در صورت نبود اسم مورد نظر اونو ثبت کنین مثل کد زیر

کد:
function searchcbx(cbx:TComboBox;search:string):Integer;
var
  i:Integer;
begin
  Result:=-1;
for i:=0 to cbx.Items.Count-1 do
begin
   if cbx.Items.Strings[i]=search then
   begin
   Result:=i;
   Break;
   end;
end;
end;

این تابع 2 پارامتر داره اوای اسم Combobox ی که میخواهین درش جستجو رو انام بدین و دومی هم مقداری که میخواهین جستجو کنین

در صورتی که مقدار مورد نظر یافت بشه خروجی تابع مقدار Index اون نام خواهد بود در غیر این صورت مقدار 1- رو برمیگردونه

کد:
procedure TForm1.Button1Click(Sender: TObject);
begin
if searchcbx(ComboBox1,ComboBox1.Text)>=-1 then
Insert
else
ShowMessage('found in list');
end;

جواب 2:
در رویداد OnDropDown شیئ combobox
سلام

این کد برای dbcombobox مشکل داره.چون توی تابع کومبو رو معمولی تعریف شده اما با تغییرش

هم نتونستم مشکلمو حل بکنم. برای اضافه کردن به آیتم دی بی کمبو باکس هم از کد زیر

استفاده میکنم که اونو همونطوری که گفتین توی dropdown نوشتم ولی اررو میده :
could not convert variant of type (null) into type (string)
با استفاده از vartostr هم الان کدش مشکل داره.

همچنین چون کمبو به فیلد نام متصل است و خودکار همون اول مقدار text این کنترل از بانک خوند

میشه قبل از ارور چندین بار (به تعداد fieldcount) بهش اد میشه.

کد خوندن و اضافه کردن »

کد:
DBCombobox1.Clear;

For i:=1 to adotable1.RecordCount do begin
DBCombobox1.items.add(adotable1['name']);
adotable1.next
end;

کد رو آپلود کردم مشکلش چیه؟؟

در این کد میخام بعد از اد و حذف یک رکورد بلافاصله لیست کامل در آیتم کمبو بیاد. و در صورت که مقادیر تکراری دادیم اضافه نشه.
راستی میشه مستقیم از بانک سرچ کنیم و بررسی کرد و اگه وجود داشت پیغام بده؟

متشکرم
دوستان این برنامه مشکلش چیه؟؟
برای دردسر کمتر بهتره از combobox استفاده کنین

و برای کارایی بیشتر از Adoquery