View Full Version : بدست آوردن مقدار یک فیلد در یک رکورد مشخص
hamid-nice
دوشنبه 25 آذر 1392, 13:32 عصر
با سلام
یک جدول Table1 فیلدهای مختلف از جمله فیلد MTN را در نظر بگیریم که این جدول 100 رکورد دارد
چه طور می شه یک دستور بنویسیم که مقدار این فیلد را در رکورد 20 بدست آورد؟
با تشکر
wolfstander
دوشنبه 25 آذر 1392, 14:40 عصر
شما یک کوئری ایجاد کن
بعد رکوردها رو بشمار
شماره بیست رو مقدار بده
البته کار درستی نیست
چون اگه سورت دیتا عوض بشه، عددی هم که برمیگرده نادرست خواهد بود
hamid-nice
دوشنبه 25 آذر 1392, 15:05 عصر
با تشکر ولی چنانکه گفتید این نقص را دارد
منتظر پاسخ های دیگر هستم
با تشکر
SayeyeZohor
دوشنبه 25 آذر 1392, 15:31 عصر
http://barnamenevis.org/showthread.php?359574-%D8%A8%D8%AF%D8%B3%D8%AA-%D8%A2%D9%88%D8%B1%D8%AF%D9%86-n-%D8%A7%D9%85%DB%8C%D9%86-%D8%B1%DA%A9%D9%88%D8%B1%D8%AF-%D8%A7%D8%B2-%DB%8C%DA%A9-%DA%A9%D9%88%D8%A6%D8%B1%DB%8C
این دستورات مربوط به tsql هستش برای اکسس باید گشت
SayeyeZohor
دوشنبه 25 آذر 1392, 15:48 عصر
SELECT *, DCount("[ID]","[Table1]","[ID]<=" & [ID]) AS row_id
FROM [Table1]
WHERE DCount("[ID]","[Table1]","[ID]<=" & [ID]) =4
هلو بپر تو گلو ....
شما یک کوئری ایجاد کن
بعد رکوردها رو بشمار
شماره بیست رو مقدار بده
البته کار درستی نیست
چون اگه سورت دیتا عوض بشه، عددی هم که برمیگرده نادرست خواهد بود
می خوای سورت کن نمیخوای سورت نکن
SayeyeZohor
دوشنبه 25 آذر 1392, 15:49 عصر
SELECT TOP 1 *
FROM (
SELECT TOP 15 *
FROM [MyTable]
ORDER BY [MyIdentityColumn] ) t
ORDER BY [MyIdentityColumn] DESC
بالایی بهتره
hamid-nice
دوشنبه 25 آذر 1392, 18:27 عصر
با سلام و تشکر از SayeyeZohor (http://barnamenevis.org/member.php?95079-SayeyeZohor) عزیز
این رو کجا باید بکار ببرم ؟ توی کوئری ؟ یا VBA ؟
می شه یک نمونه ضمیمه کنید ؟
با تشکر
Abbas Amiri
دوشنبه 25 آذر 1392, 19:03 عصر
با سلام و تشکر از SayeyeZohor (http://barnamenevis.org/member.php?95079-SayeyeZohor) عزیز
این رو کجا باید بکار ببرم ؟ توی کوئری ؟ یا VBA ؟
می شه یک نمونه ضمیمه کنید ؟
با تشکر
باید عبارت SQL رو به یک رکوردست نسبت دهید و مقدار فیلد موردنظر را بخوانید . مثال زیر هم مفید است:
Function GetFieldInNthRecord(tableName As String, fieldName As String, Row As Integer)
On Error GoTo ErrH
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset(tableName)
'rs.MoveLast :rs.MoveFirst
rs.Move Row - 1
GetFieldInNthRecord = rs(fieldName)
Exit_GetFieldInNthRecord:
Set rs = Nothing
Exit Function
ErrH:
MsgBox " Error " & Err & " " & Err.Description
GoTo Exit_GetFieldInNthRecord
End Function
hamid-nice
دوشنبه 25 آذر 1392, 19:33 عصر
با سلام و تشکر از جناب امیری عزیز تابع عالی بود
1- اگه بخواهیم این مساله را برای یک سابفرم بکار ببریم چه طور باید عمل کنیم یعنی مقدار فیلد مورد نظر در رکورد دلخواه از سابفرم که البته اگه فیلتر هم انجام بدیم درست عمل کنه
2- آیا Sql ها را VBA ، فقط به رکورد ست ها می شه نسبت داد یا ... ؟ چطور ؟ اگه لازمه یک تاپیک مجزا برای این مساله بزنم ؟
با تشکر
Abbas Amiri
دوشنبه 25 آذر 1392, 21:01 عصر
با سلام و تشکر از جناب امیری عزیز تابع عالی بود
1- اگه بخواهیم این مساله را برای یک سابفرم بکار ببریم چه طور باید عمل کنیم یعنی مقدار فیلد مورد نظر در رکورد دلخواه از سابفرم که البته اگه فیلتر هم انجام بدیم درست عمل کنه
2- آیا Sql ها را VBA ، فقط به رکورد ست ها می شه نسبت داد یا ... ؟ چطور ؟ اگه لازمه یک تاپیک مجزا برای این مساله بزنم ؟
با تشکر
بجای tableName میتوانید نام جدول و یا یک عبارت کوئری را بکار ببرید که در آنصورت بهتر است خط 5 کدهای فوق را فعال کنید .
در مورد سوال 2 اگر عبارت SQL شما جهت دستکاری داده ها باشد از روش CurrentDb.Execute استفاده کنید ولی اگر می خواهید مقدار یا مقادیری را استخراج کنید بایستی از شیء رکوردست استفاده کنید.
hamid-nice
دوشنبه 25 آذر 1392, 22:18 عصر
می شه برای اینکه مطلب هم کامل بشه منظورتان را از " عبارت SQL رو به یک رکوردست نسبت دهید و مقدار فیلد موردنظر را بخوانید" با انتساب کدهای پست 5# به عنوان مثال نشان دهید
خیلی ممنون
Abbas Amiri
سه شنبه 26 آذر 1392, 20:32 عصر
می شه برای اینکه مطلب هم کامل بشه منظورتان را از " عبارت SQL رو به یک رکوردست نسبت دهید و مقدار فیلد موردنظر را بخوانید" با انتساب کدهای پست 5# به عنوان مثال نشان دهید
خیلی ممنون
از روش زیر استفاده کنید :
Dim rs as Recordset
strSQL = "SELECT *, DCount('[ID]','[Table1]','[ID]<=' & [ID]) AS row_id " & _
"FROM [Table1] WHERE DCount('[ID]','[Table1]','[ID]<=' & [ID]) =4"
set rs=currentdb.OpenRecordset (strSQL)
Myvar=rs("MyField")
hamid-nice
چهارشنبه 27 آذر 1392, 02:20 صبح
رکوردست زیر مجموعه چی حساب می شه ؟ آیا فقط جزو توابع DAO هست یا ... ؟
با تشکر
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.