איך לכתוב ל CSV שדה שמכיל ,
-
בשביל לעבור על מאפיינים של טופס ופקד באקסס,
כדי לראות מי יושפע כתוצאה של שינוי במבנה ה DB או קוד VBA
אני מנסה להשתמש בפונקציה שתכתוב ל CSV את כל הפרמטרים.הבעיה היא כשיש לי מאפיין כזה:
=DLookUp("int","settings","id=2")
וזה הפונקציה שיוצרת את ה CSV
Public Sub LoopFormProps() On Error GoTo err_Handler Dim frmLoop As Object Dim ctrl As Control Dim propLoop As Property Dim strFormName As String Dim s As String Dim n As Integer n = FreeFile() Open "C:\AnyFolder\Version\Beta\Ctl.csv" For Output As #n s = "Form.NAME,Ctrl.NAME,Prop.NAME,Prop.value" Print #n, s ' write to file ' For Each frmLoop In CurrentProject.AllForms strFormName = "Settings" 'frmLoop.NAME DoCmd.OpenForm strFormName, acDesign, , , , acHidden With Forms(strFormName) For Each propLoop In .Properties s = .NAME & ",Form," & propLoop.NAME & "," & propLoop.value 'Debug.Print s ' write to immediate Print #n, s ' write to file Next For Each ctrl In .Controls For Each propLoop In ctrl.Properties s = .NAME & "," & ctrl.NAME & "," & propLoop.NAME & "," & """" & propLoop.value & """" Print #n, s ' write to file Next Next End With DoCmd.Close acForm, strFormName ' Next Close #n Exit Sub err_Handler: Select Case err.Number Case 2186 'Property not available in design view Resume Next Case Else MsgBox "Err: " & err.Number & " - " & err.Description Resume Next End Select Close #n End Sub
-
@clickone אמר באיך לכתוב ל CSV שדה שמכיל ,:
תנסה לעטוף את הערך בגרשיים.
הבעיה שיש בתוך ה"ערך" גם גרשיים.
פשוט פתחתי אקסל והכנסתי בו את הערך הרצוי ב CSV, וראיתי איך הוא שומר אותו.
ולפי זה עשיתי את הקוד הזהs = .NAME & "," & ctrl.NAME & "," & propLoop.NAME & "," & """" & Replace(Nz(propLoop.value), """", """""") & """"
-
@clickone
אגב בתור משתמש אקסס VBA בעבר אולי זה יעניין אותך.היה לי טבלה בשם settings שהכילה את ההגדרות, שיניתי לקובץ INI.
הקריאות להגדרות שהיו בתוך הקוד שיניתי בקלות, הפנתי את כולם לפונקציה של GetConfigValue שמקבל פרמטר מתוך רשימת Enum.
הבעיה הייתה עם מאפיינים של פקדים בתוך הטפסים שקבלו את הנתון דרך DlookUp,
בשביל זה השתמשתי עם הפונקציה הנ"ל והוספתי לה את השורות הבאות:If propLoop.NAME = "DefaultValue" Then DoEvents Debug.Print "Me." & ctrl.NAME & ".DefaultValue = " propLoop.value propLoop.value = "" End If