View Full Version : سوال: ججستجوی اعداد جا افتاده در بین اعداد
reza2371
جمعه 24 فروردین 1397, 01:55 صبح
سلام خدمت اساتید محترم
یه برنامه درست کردم میخام به صورت اتومات شماره به من بده. با این توضیح که اول توی بانکم جستجو بکنه و اگر شماره ای جا افتاده باشه اول شماره جا افتاده را بهم اعلام بکنه و در غیر این صورت شماره جدید بهم اعلام بکنه
فقط سورسی که شماره جا افتاده پیدا میکنه و شماره جدید میده را اگه دوستان لطف کنن بدن ممنون میشم.
زبان vb در اکسس
reza2371
شنبه 25 فروردین 1397, 21:57 عصر
سلام کسی هست بتونه کمکم بکنه که سورس جستجوی اعداد در بین اعداد متوالی را برام اشتراک بذاره؟؟؟
mazoolagh
یک شنبه 26 فروردین 1397, 08:04 صبح
از چند راه میتونین به جواب برسین:
1- اگر یک جدول دیگه داشته باشین که تمام ردیف ها رو داشته باشه (RADIF_TABLE) اونوقت میتونین از یکی از دو کوئری زیر استفاده کنین:
SELECT RADIF_TABLE.RADIF
FROM RADIF_TABLE LEFT JOIN MAIN_TABLE ON RADIF_TABLE.RADIF=MAIN_TABLE.RADIF
WHERE MAIN_TABLE.RADIF IS NULL
SELECT RADIF
FROM RADIF_TABLE
WHERE RADIF NOT IN (SELECT RADIF FROM MAIN_TABLE)
هر کدوم از این دو تمام ردیف های جا افتاده رو برمیگردونن. اگر فقط اولین ردیف نیاز باشه کافی هست روی کوئری ORDER BY و TOP 1 اعمال کنین.
2- از رکوردست و شمارنده استفاده کنین. در یک حلقه RADIFها رو به ترتیب بخونین و اگر مقدار اون با شمارنده برابر نبود یعنی حذف شده
reza2371
یک شنبه 26 فروردین 1397, 19:30 عصر
خیلی تشکر از لطف شما
بصورت کد ویژوال بیسیک ندارید؟ (اولین عدد جا افتاده را نمایش بدهد و اگر داخل بانک موجود نبود بزرگترین عدد +1 را بما نمایش بدهد)
البته اینم بگم که اعداد داخل بانک از دو جز تشکیل شدن مثلا 009/12 . سمت راست سه رقم و چپ دو رقم
اگه امکان داره نمونه بذارید ممنون
reza2371
سه شنبه 28 فروردین 1397, 11:45 صبح
از چند راه میتونین به جواب برسین:
1- اگر یک جدول دیگه داشته باشین که تمام ردیف ها رو داشته باشه (RADIF_TABLE) اونوقت میتونین از یکی از دو کوئری زیر استفاده کنین:
SELECT RADIF_TABLE.RADIF
FROM RADIF_TABLE LEFT JOIN MAIN_TABLE ON RADIF_TABLE.RADIF=MAIN_TABLE.RADIF
WHERE MAIN_TABLE.RADIF IS NULL
SELECT RADIF
FROM RADIF_TABLE
WHERE RADIF NOT IN (SELECT RADIF FROM MAIN_TABLE)
هر کدوم از این دو تمام ردیف های جا افتاده رو برمیگردونن. اگر فقط اولین ردیف نیاز باشه کافی هست روی کوئری ORDER BY و TOP 1 اعمال کنین.
2- از رکوردست و شمارنده استفاده کنین. در یک حلقه RADIFها رو به ترتیب بخونین و اگر مقدار اون با شمارنده برابر نبود یعنی حذف شده
سلام
تشکر ویژه ممنون ار راهنماییتون
لطف میکنید برای مورد دوم نمونه بذارید
آخه من تازه کارم و بلد نیستم ممنونم
mazoolagh
سه شنبه 28 فروردین 1397, 15:39 عصر
PUBLIC FUNCTION MISSED_RADIF (TABLE_NAME AS STRING , RADIF_FIELD AS STRING) AS LONG
DIM RS AS RECORDSET
SET RS=CURRENTDB.OPENRECORDSET ("SELECT " & RADIF_FIELD & " FROM " & TABLE_NAME & " ORDER BY " & RADIF_FIELD)
MISSED_RADIF= -1
DO WHILE NOT RS.EOF
IF RS.ABSOLUTEPOSITION+1=RS(RADIF_FIELD) THEN
RS.MOVENEXT
ELSE
MISSED_RADIF=RS.ABSOLUTEPOSITION+1
EXIT DO
END IF
LOOP
RS.CLOSE
SET RS=NOTHING
END FUNCTION
به جای TABLE_NAME و RADIF_FIELD به ترتیب اسم جدول و فیلد ردیف خودتون رو بگذارین.
تابع اگر ردیف جا افتاده نداشته باشین مقدار 1- برمیگردونه
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.