PDA

View Full Version : سوال: ایجاد تغییرات در فرم جاری



alinoori76
شنبه 26 دی 1388, 14:04 عصر
با سلام در این تیکه برنامه تغییرات انجام شده فقط در رکورد اول ثبت میشود یعنی در هر رکوردی که روی command59 کلیک کنی فقط براورد رکورد اول رو تغییر میده میخواهمم تغییرات در رکورد جاری جداگانه ثبت شود . لطفا بگید ایراد کارم چیه ممنونم



Private Sub Command59_Click()

Dim db As Database, rst As Recordset, codepas As String
Set db = CurrentDb
Set rst = db.OpenRecordset("barnameha")
rst.Edit
rst.Fields("baravordestdio").Value = rst![baravordestdio] - Me.modat_afish
rst.Update
End Sub

mazoolagh
یک شنبه 27 دی 1388, 08:56 صبح
اگر فرم شما bound هست که دیگه نیازی به بازکردن Recordset ندارین (اشکال کار شما هم همین هست که رکوردست رو باز میکنین و رکورد اولش رو ادیت میکنین)
کافی هست بنویسین:

me.baravord=me.modat

اما اگر فرم unbound استفاده کردین باید رکوردست رو براساس یک کلید حستجوکنین (با متد findfirst) و اون رکورد موردنظر رو ادیت کنین

alinoori76
دوشنبه 28 دی 1388, 07:28 صبح
با تشکر از شما . بی زحمت اگه ممکنه نحوه نوشتن متد findfirst رو برام بنویسید چون آشنایی خوبی با این متد ندارم البته یه چیزایی نوشتم لطفا یه بررسی کنید و در صورت نیاز اصلاح شود .


Private Sub Command59_Click()
'Command59.Enabled = False
Dim db As Database, rst As Recordset, codepas As String
Set db = CurrentDb

Set rst = db.OpenRecordset("barnameha")
rst.FindFirst "namebarname" = Me.namebarname

rst.Edit
rst.Fields("baravordestdio").Value = rst![baravordestdio] - Me.modat_afish

rst.Update

End Sub

alinoori76
دوشنبه 28 دی 1388, 10:34 صبح
لطفا نظر بدید متشکرم

mazoolagh
دوشنبه 28 دی 1388, 12:17 عصر
rst.FindFirst ("namebarname=" & Me.namebarname)


ضمنا بهتر هست بعد از جستجو با findfirst با متد nomatch یک کنترل کنین تا مطمئن بشین چیزی پیدا شده یا نه


if rst.nomatch then
msgbox("not found")
else
...
...
...
endif

alinoori76
دوشنبه 28 دی 1388, 13:06 عصر
بی زحمت یه بررسی کنید چون من به این نحو نوشتم که بازم ایراد میگیره


Private Sub Command59_Click()
'Command59.Enabled = False
Dim db As Database, rst As Recordset, codepas As String
Set db = CurrentDb

Set rst = db.OpenRecordset("barnameha")
rst.FindFirst ("namebarname=" & Me.namebarname)
If rst.NoMatch Then
MsgBox ("NoMatch")
Else


rst.Edit
rst.Fields("baravordestdio").Value = rst![baravordestdio] - Me.modat_afish

rst.Update

End If
End Sub

alinoori76
پنج شنبه 01 بهمن 1388, 11:23 صبح
اساتید محترم لطفا نظر بدید

amirzazadeh
پنج شنبه 01 بهمن 1388, 11:59 صبح
اساتید محترم لطفا نظر بدید
لطفا نمونه خودتون رو آپلود كنيد.

alinoori76
جمعه 02 بهمن 1388, 15:01 عصر
با سلام نمونه برنامه توضیحات داخل برنامه است

alinoori76
چهارشنبه 07 بهمن 1388, 09:05 صبح
لطفا این بانک رو بررسی کنید

mazoolagh
چهارشنبه 07 بهمن 1388, 10:11 صبح
1- کمبو "نام برنامه" مقداری که برمیگردونه فیلد shomarebaravord هست و نه namebarname
پس اول باید جستجو رو اصلاح کنین:

rst.FindFirst ("shomarebaravord=" & Me.namebarname)

2- رکوردست رو بصورت زیر باز کنین:

Set rst = db.OpenRecordset("barnameha", dbOpenDynaset)

البته هم طراحی جداول و هم کدنویسی هاتون نیاز به اصلاح اساسی داره

alinoori76
جمعه 16 بهمن 1388, 08:58 صبح
بی زحمت جواب دهید و عیب برنامه رو مشخص کنید متشکرم

karmand
شنبه 17 بهمن 1388, 07:31 صبح
فرم شما كه باند است پس هر تغييري بروي فرم روي ركورد جاري عمل ميشود

me.baravord=me.baravord-me.modat
ولي بطور كلي به سمت sql برويد
با يك سطر جدولي كه اصلا باند نيست را ميتواني اپديت كني با شروط دلخواه

UPDATE Table1 SET Table1.a = "b"
WHERE (((Table1.a)="c"));

alinoori76
پنج شنبه 22 بهمن 1388, 10:47 صبح
لطفا واضحتر توضیح بدید متوجه نشدم خواهشا