PDA

View Full Version : سوال: نحوه فیلتر کردن با recordset



royasaz_bam
پنج شنبه 15 دی 1390, 03:43 صبح
سلام در تابع ذیل میتوان بیشترین مقدار فیلد فی فروش را پیدا کنم حال اگر بخواهم همزمان یک فیلتر (به طور مثال فیلد کد کالا ) هم داشته باشد چه باید کرد یعنب در این تابع قبل از پیدا کردن بیشترین مبلغ فروش ابتدا بر اساس کد کالا فیلتر شود

Function max_fi()
Dim sql As String, rst As Recordset
sql = "select max(fi_forosh) as Max_Code from verod_kala "

Set rst = CurrentDb.OpenRecordset(sql, dbOpenSnapshot)


max_fi = rst!Max_Code
End If
rst.Close
End Function

royasaz_bam
پنج شنبه 15 دی 1390, 14:36 عصر
کسی میدونه با این دستور آیا میشه به جواب رسید

Me.RecordsetClone.FindFirst "[id_kala]= " & Me![text0]

royasaz_bam
جمعه 16 دی 1390, 02:02 صبح
گویا دستور where میتونه کمک بکنه ولی نحوه بکار گیریش در تابع بالا را بلد نیستن این دستور به نحو زیر در کوری جواب مبده حال در تابع بالا چگونه باید قرار بگیره
WHERE (((verod_kala.coke_id_kala) Like [Forms]![Form1]![Text0]));

royasaz_bam
جمعه 16 دی 1390, 04:20 صبح
بله بلاخره توانستم حلش کنم !!!!!!!!!!!! کس نخارید پشت من ،، خودم خاریدم پشتمو اونم با ناخون شستم !!!!!!!!!! و جا داره از خودم تشکر کنم
راه حل را از طریق ساخت کوری و درآوردن sql آن بدست آوردم و تابع فوق با این تغیرات ابتدا کالا را بر اساس کد فیلتر و سپس بیشترین مقدار را ارائه میدهد
Function max_fi()
Dim sql As String, rst As Recordset

sql = "SELECT Max(verod_kala.fi_fa) AS MaxOffi_fa FROM verod_kala WHERE (((verod_kala.coke_id_kala)= " & [Forms]![Form1]![Text3] & " ));"


Set rst = CurrentDb.OpenRecordset(sql)

If IsNull(rst!MaxOffi_fa) Then
MsgBox "åí ãÈáÛí ÊÚííä äÔÏå ÇÓÊ"
Else
max_fi = rst!MaxOffi_fa
End If
rst.Close
End Function

royasaz_bam
جمعه 16 دی 1390, 04:30 صبح
اینم از تابع پیدا کردن بشترین مقدار بر اسا فیلتر خواص
Function max_fi()
Dim sql As String, rst As Recordset

sql = "SELECT Max(verod_kala.fi_fa) AS MaxOffi_fa FROM verod_kala WHERE (((verod_kala.coke_id_kala)= " & [Forms]![Form1]![Text0] & " ));"


Set rst = CurrentDb.OpenRecordset(sql)

If IsNull(rst!MaxOffi_fa) Then
MsgBox "åí ãÈáÛí ÊÚííä äÔÏå ÇÓÊ"
Else
max_fi = rst!MaxOffi_fa
End If
rst.Close
End Function

michkadol
شنبه 17 دی 1390, 11:29 صبح
با چه دستوری میشه وقتی فیلتر کردی رکوردهایی که با فیلتر برابر است (مثلا 5 رکود نمایش داده شده) را در جدول دیگری ذخیره نمود؟
ابتدا رکوردها رو انتخاب و بعد در جدول دیگری ایجاد کنه؟

royasaz_bam
شنبه 17 دی 1390, 19:24 عصر
سوال خوبیه راستی چطوری میشه ، ها:متفکر:

Abbas Amiri
شنبه 17 دی 1390, 20:51 عصر
از روال زیر می توانید استفاده کنید:


Sub InsertTableFromRecordset(rs As DAO.Recordset, TableName As String)
Dim sSQL As String, fld As DAO.Field
Dim s As String
For Each fld In rs.Fields
s = s & fld.Name & ","
Next
s = Left(s, Len(s) - 1)
s = "INSERT INTO " & TableName & " (" & s & ") VALUES("
Do While Not rs.EOF
sSQL = ""
For Each fld In rs.Fields
If fld.Type = dbText Or fld.Type = dbMemo Then
sSQL = sSQL & "'" & fld & "',"
ElseIf fld.Type = dbDate Or fld.Type = dbTime Then
sSQL = sSQL & "#" & fld & "#,"
Else
sSQL = sSQL & fld & ","
End If
Next
sSQL = Left(sSQL, Len(sSQL) - 1) & ")"
sSQL = s & sSQL
CurrentDb.Execute sSQL
rs.MoveNext
Loop
End Sub