PDA

View Full Version : سوال: چک کردن VSflexgrid و جلوگیری از ورود اطلاعات تکراری



hamed_vb
جمعه 03 اردیبهشت 1395, 11:54 صبح
سلام دوستان من به مشکلی برخورد کردم که نتونستم حلش کنم

من میخوام اطلاعات تکست هام رو که پر کردم رو وارد Vsflexgrid کنم اما میخوام قبلش چک کنه ببینه اطلاعات قبلی وارد شده در جدول تکراری هست یا نه
ممنون میشم کمکم کنید

vbhamed
شنبه 04 اردیبهشت 1395, 05:29 صبح
سلام
به طور ساده با خود vsFlexGrid کار می‌کنید یا به بانک اطلاعاتی متصل هستید ؟

hamed_vb
یک شنبه 05 اردیبهشت 1395, 14:43 عصر
سلام نه به طور ساده با vsflexgrid کار میکنم و به دیتابیس متصل نیست فقط از فرمی اطلاعات تکستهامو میخوام ارسال کنم به فلکس گرید و قبل ارسال می خوام چک کنه ببینه اطلاعات تکراری وجود داره یا نه مثلا کد ملی نمیخوام توی یه جدول 2 بار کد ملی وارد بشه

محسن واژدی
دوشنبه 06 اردیبهشت 1395, 06:03 صبح
سلام
در دستور FindRow میتوانید رشته ای را در ردیف/ستون تعریف شده جستجو کنید، میتونید یکی از رشته ها که منحصربه فرد هستند را به عنوان مبنای مقایسه استفاده کنید. برای مثال اگر شماره های تلفن همراه در ستون دوم درج میشود میتوانید ملاک تکراری بودن را نبودن داده ها را این ستون قرار دهید در اینصورت با اجرای دستور FindRow بر روی این ستون و جستجوی شماره همراه، در صورت نبودن آن شماره در لیست، داده ها را اضافه کنید (نمونه زیر ردیف های ستون شماره 2 را جستجو میکند (فرض ما این است که شماره های تلفن همراه در این ستون اضافه شده اند)، اگه رشته وجود داشت شماره ردیف برگشت داده میشود در غیراینصورت مقدار برگشتی -1 خواهد بود):
Private Sub Command1_Click()
Dim lTarDataIndex&
lTarDataIndex& = VSFlexGrid1.fg.FindRow("09123456789", , 2)
If lTarDataIndex& > -1 Then
MsgBox "Found target in row: " & lTarDataIndex&
Else
MsgBox "Nothing found.."
End If
End Sub

موفق و پیروز باشید

hamed_vb
پنج شنبه 23 اردیبهشت 1395, 12:50 عصر
سلام دوست عزیز یک مشکل دیگه اینکه من میخوام مثلا یک ایتمی رو بزنم و اگر تکرارش در جدول باشه مثلا تعداد اون ایتم رو جمع بزنه

مثل فاکتور فروش که مثلا اگر کد 1 در داخل جدول قبلا زده شده باشه و بازم اگر مجددا بخواد درج بشه مجزا ثبت نکنه جمع بزنه و فقط از یک کالا 1 عدد در داخل فاکتور باشه امیدوارم منظورمو متوجه شده باشین

vbhamed
پنج شنبه 23 اردیبهشت 1395, 15:53 عصر
سلام
خب با کدی که محسن واژدی عزیز دادن سطری که با اون کد در جدول وجود داره پیدا میشه حالا عددی که در اون سطر و ستون تعداد هست رو زیاد کنید یا با مقدار جدید جمع بزنید

hamed_vb
پنج شنبه 23 اردیبهشت 1395, 19:23 عصر
ببخشید من متوجه نمی شم اینی که شما گفتید فقط در مورد شماره های خاص مثل کد ملی هستش این دستور از کجا باید تشخیص بده مثلا توی جدول 4 تا مورد هست که تعدادش 5 هستش الان این دستور باید کجا باید تشخیص بده کدوم 5 رو من مد نظرم هست اگه امکان داره شما دستورشو بدید چون من با حلقه For نتونستم انجامش بدم ممنون میشم بیشتر راهنماییم کنین خیلی سعی کردم

m.4.r.m
پنج شنبه 23 اردیبهشت 1395, 19:52 عصر
آخه دوست عزیز شما وقتی اسم فاکتور میاری یعنی متصل به بانک اطلاعاتی !! شما میتونی توسط sql تکرار رو جست و جو کنی یا میتونی از طریق توابعی که دوستان گفتن پیدا کنی خود Vsflexgrid یه دستوری داره که میتونی ستون هارو جمع ، تعداد ، میانگین و .... رو بگیری . کار باهاش سادس شما کدی که نوشتی رو بزار اینجا برات ویرایش کنیم

hamed_vb
پنج شنبه 23 اردیبهشت 1395, 21:02 عصر
سلام دوست عزیز من سورس برنامم که پیش فرض براتون فرستادم

140382

مسئله اینه مشکل من هم توی پاک کردن ایتم هست و هم جمع زدن کالای تکراری بر روی قبلی
البته نه پاک کردن ساده بلکه پاک کردن ایتمی که روش کلیک کردم یا با کیبورد روش فوکوس کردم

vbhamed
جمعه 24 اردیبهشت 1395, 07:29 صبح
ببخشید من متوجه نمی شم اینی که شما گفتید فقط در مورد شماره های خاص مثل کد ملی هستش این دستور از کجا باید تشخیص بده مثلا توی جدول 4 تا مورد هست که تعدادش 5 هستش الان این دستور باید کجا باید تشخیص بده کدوم 5 رو من مد نظرم هست اگه امکان داره شما دستورشو بدید چون من با حلقه For نتونستم انجامش بدم ممنون میشم بیشتر راهنماییم کنین خیلی سعی کردم

سلام
خب شما خودتون اشاره کردین اگر مثلا کد 1 قبلا زده شده بود و این یعنی تو لیستتون ستونی به اسم کد کالا دارید و از روی همون تشخیص میدین کدوم مقدار باید اضافه بشه

hamed_vb
جمعه 24 اردیبهشت 1395, 11:34 صبح
مساله اینه نتونستم دستورشو بنویسم از طرفی چطور باید اون ایتم رو حذف کنمم هم یه مشکل هست

vbhamed
شنبه 25 اردیبهشت 1395, 11:53 صبح
سلام
یک حلقه For میزارید و محتویات ستون کد رو در هر سطر چک می‌کنید که برابر کد جدید وارد شده هست یا نه، اگر بود یعنی پیدا شده و باید ستون تعداد اون سطر اضافه بشه
برای پیدا کردن می‌تونید از دستورات پست 4 هم استفاده کنید

حذف آیتم هم با متد RemoveItem کنترل vsFlex قابل انجامه، همچنین با متد Delete شیء Ado

hamed_vb
دوشنبه 27 اردیبهشت 1395, 15:13 عصر
سلام کسی از دوستان هست توی این مشکل منو یاری کنه ممنون میشم
سورس کدمو آپلود کردم میتونین مشکل رو ببینین140447

hamed_vb
شنبه 01 خرداد 1395, 13:30 عصر
سلام دوستان عزیز اگر دقت به بازدید این تاپیک بکنید تا الان نزدیگ 300 تا بازدید داشته بعنی مشکل اکثریت کسایی که با VSflexgrid کار می کنن هستش پس اگر کسی بلده این مشکل رو حل کنه لطفا کمک کنه خیلی ضروری من دیگه موندم توش اصلا جواب نمیده کدهام سورسشم بالا ضمیمه کردم میتونین ببینین اگر کسی بلد هست لطفا راهنمایی کنه تا مشکل همه رفع بشه چون من هر چقدر جستجو کردم این موضوع اصلا مطرح نشده در هیچ کدام از فروم های مربوط به برنامه نویسی

vbhamed
یک شنبه 02 خرداد 1395, 15:32 عصر
سلام

دوست عزیز
من کد شما رو دیدم، درست کردن این کد طبق چیزی که شما می‌خواین میشه گرفتن ماهی برای شما

مشکل اکثر برنامه نویس ها اینه که وقتی میخوان برنامه بنویسن میشینن پشت کامپیوتر و شروع میکنن به نوشتن، اصلا هیچ کاری با الگوریتم و فلوچارت برنامه ندارند و قاعدتا به مشکل برخورد می‌کنند

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