استخراج Caption فرم ها با استفاده از نام موجود
در یک جدول نام فرم ها در یک فیلد ذخیره می باشد و چون برای استخراج اطلاعات Caption هر فرمی از فرمول Form_Frmx.Caption استفاده می شود ... بنابر این اگه اطلاعات فیلد من frmx باشد چطوری می تونم این کد رو اجرا کنم :
مثلا : متغیر FrmName رو برابر همون مقدار فیلد می کنیم :
dim frmname as string
frmname="form_" & dlookup("[fldfrmname]","tblforms")
msgbox frmname.caption
هر کاری می کنم جواب نمیگیرم !!!
نقل قول: استخراج Caption فرم ها با استفاده از نام موجود
اینجا دو مشکل هست؛
اول اینکه کدتون از پایه نادرست هست چون string یک data type هست و نه object بنابراین فاقد property هست و بهمین دلیل frmname.caption معنی نداره.
شما باید یک آبجکت از نوع form تعریف کنین و بعد میتونین caption اون فرم رو بدست بیارین ولی مشکل بعدی اینجا بروز میکنه که وقتی اینکار میسر هست که فرم باز بشه (چه در حالت عادی چه در حالت طراحی).
اگر فرم مورد نظرتون باز هست که خب مشکلی نیست و میتونین از کد زیر استفاده کنین:
FORMS(frmname).CAPTION
اما اگر باز نیست مجبورین بازش کنین و بعد از خوندن CAPTION دوباره ببندینش که چندان کار جالبی بنظر نمیاد! مگر اینکه در حالت HIDDEN باشه :
DIM frmname, frmcap AS STRING
frmname="...."
DOCMD.OPENFORM frmname,,,,ACHIDDEN
frmcap=FORMS(frmname).CAPTION
DOCMD.CLOSE ACFORM,frmname,ACSAVENO
نقل قول: استخراج Caption فرم ها با استفاده از نام موجود
نام اشیای ایجاد شده و سیستمی اکسس در جدول MSysObjects نگهداری می شود
Dim fld As Field, rs As Recordset
Set rs = CurrentDb.OpenRecordset("MSysObjects")
Do While Not rs.EOF
If rs.Fields("Type") = -32768 Then
Debug.Print rs.Fields("Name")
End If
rs.MoveNext
Loop
Set rs = Nothing
End Sub
نقل قول: استخراج Caption فرم ها با استفاده از نام موجود
من نام فرم ها رو با کد زیر استخراج می کنم و در جدول مربوطه ذخیره می کنم و نمی خوام هیچ فرمی هم باز بشه تا کپشن اونو بردارم : کپشن فرم در حالت unload فرم مد نظر منه :
Private Sub Command16_Click()
On Error Resume Next
Dim DB As Database
Dim rst As Recordset
Dim obj1 As AccessObject
Set DB = CurrentDb
Set rst = DB.OpenRecordset(" select * from TblSysForms ")
rst.MoveFirst
For Each obj1 In CurrentProject.AllForms
rst.Edit
rst.Fields(1) = obj1.name
rst.Update
rst.MoveNext
Next obj1
End Sub
نقل قول: استخراج Caption فرم ها با استفاده از نام موجود
کدی که نوشته اید تست کردم ، Error داشت . اولا باید جدول TblSysForms ایجاد کنیم بعد برای آپدیت کردن آن باید قبلا تعداد رکورد برابر تعداد فرمها داشته باشیم ویا اگر جدول خالی است AddNew. کنیم ،و درخط پنجم بجای AccessObject باید Object قراردهیم
نقل قول: استخراج Caption فرم ها با استفاده از نام موجود
اول از همه اینکه برای پیدا کردن اسامی تمام فرمها راه بهتر از خواندن جداول سیستمی هم هست.
دوم:
نقل قول:
نمی خوام هیچ فرمی هم باز بشه تا کپشن اونو بردارم : کپشن فرم در حالت unload فرم مد نظر منه
همونطور که گفتم پاسخ بطور مطلق منفی هست.