Chào mừng đến với Diễn đàn Dân Kế Toán - Kế toán tổng hợp thực tế.
Kết quả 1 đến 8 của 8
  1. #1
    Ngày tham gia
    Aug 2015
    Bài viết
    0

  2. #2
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Chạy một đoạn code được lưu trong biến biến

    Nếu các câu lệnh của bạn đơn thuần lấy về 1 giá trị số hoặc chuỗi, bạn có thể dùng hàm Eval(StringExp ) để thực thi 1 biểu thức lưu dưới dạng text. Biểu thức này có thể bao gồm các function,hằng, biến...
    Ví dụ:
    bạn thử thế này xem:


    Mã:
    Dim x as String
    x= "1 +2 +3 +4"
    
    Msgbox Eval(x)
    Kết quả báo lên là 10



    Mã:
    x = "Ucase(""abcde"")"
    MsgBox Eval(x)
    Kết quả báo lên: ABCDE
    Chúc may mắn

  3. #3
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Chạy một đoạn code được lưu trong biến biến

    Cảm ơn LoveBlue nhiều! Tuy nhiên hàm Eval chỉ trả về giá trị của một biểu thức lưu dưới dạng một chuỗi chứ không chạy được 1 dòng code VBA.
    VD: Mình có biến st= "Docmd.OpenForm 'frmMain'"
    hoặc st = "If a > B then Max = a"
    Mình muốn thực thi dòng code lưu trong biến st

  4. #4
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Chạy một đoạn code được lưu trong biến biến

    Bạn có thể nói mục đích của bạn là gì không? Mình có thể tìm giải pháp khác! Ví dụ các dòng Code VBA thì bạn nên lưu trong các Module ở dạng sub hay function. Như vậy Access sẽ không mất công dịch lại cho những lần chạy kế tiếp.

    Tham khảo:
    http://thuthuataccess.blogspot.com/2010/02/tinh-gia-tri-1-cong-thuc-luu-trong.html

  5. #5
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Chạy một đoạn code được lưu trong biến biến

    Mình có ý tưởng thế này: Thiết kế một table Menu. Các Menu Item và các dòng lệnh tương ứng để thực hiện khi NSD chọn menu sẽ được lưu trong table này. Khi khởi động chường trình, Toàn bộ menu sẽ được load từ table này. Mục đích là để tiện cho việc nâng cấp, bố trí giao diện chương trình và tùy biến cho từng người dùng.

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    52
    Ðề: Chạy một đoạn code được lưu trong biến biến

    Đây là đoạn code mà bạn cần:
    Option Compare Database

    Private Type STARTUPINFO
    cb As Long
    lpReserved As String
    lpDesktop As String
    lpTitle As String
    dwX As Long
    dwY As Long
    dwXSize As Long
    dwYSize As Long
    dwXCountChars As Long
    dwYCountChars As Long
    dwFillAttribute As Long
    dwFlags As Long
    wShowWindow As Integer
    cbReserved2 As Integer
    lpReserved2 As Long
    hStdInput As Long
    hStdOutput As Long
    hStdError As Long
    End Type

    Private Type PROCESS_INFORMATION
    hProcess As Long
    hThread As Long
    dwProcessID As Long
    dwThreadID As Long
    End Type

    Private Declare Function WaitForSingleObject Lib "kernel32" (ByValhHandle As Long, ByVal dwMilliseconds As Long) As Long

    Private Declare Function CreateProcessA Lib "kernel32" (ByVal lpApplicationName As String, _
    ByVal lpCommandLine As String, _
    ByVal lpProcessAttributes As Long, _
    ByVal lpThreadAttributes As Long, _
    ByVal bInheritHandles As Long, _
    ByVal dwCreationFlags As Long, _
    ByVal lpEnvironment As Long, _
    ByVal lpCurrentDirectory As String, _
    lpStartupInfo As STARTUPINFO, _
    lpProcessInformation As PROCESS_INFORMATION) As Long

    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

    Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long


    Private Const NORMAL_PRIORITY_CLASS = &H20&
    Private Const INFINITE = -1&
    Private Const SW_MINIMIZE = 6
    Private Const STARTF_USESHOWWINDOW = &H1
    Private Const SW_SHOWMINIMIZED = 2


    Private Function ExecCmd(cmdline$)
    Dim proc As PROCESS_INFORMATION
    Dim start As STARTUPINFO

    ' Initialize the STARTUPINFO structure:
    start.cb = Len(start)

    'set ******* info to window minimized.
    start.dwFlags = STARTF_USESHOWWINDOW
    start.wShowWindow = 6 '"SW_MINIMIZE"

    ' Start the shelled application:
    ret& = CreateProcessA(vbNullString, cmdline$, 0&, 0&, 1&, _
    NORMAL_PRIORITY_CLASS, 0&, vbNullString, start, proc)

    ' Wait for the shelled application to finish:
    ret& = WaitForSingleObject(proc.hProcess, INFINITE)
    Call GetExitCodeProcess(proc.hProcess, ret&)
    Call CloseHandle(proc.hThread)
    Call CloseHandle(proc.hProcess)
    ExecCmd = ret&
    End Function

  7. #7
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Ðề: Chạy một đoạn code được lưu trong biến biến

    sao đoạn code của bạn tôi lấy về không chạy được nhỉ
    st$ = "msgbox 1"
    a = ExecCmd(st$)
    cách gọi hàm đó có gì sai không
    rất mong sự trợ giúp của bạn

  8. #8
    Ngày tham gia
    Feb 2016
    Bài viết
    1
    Ðề: Chạy một đoạn code được lưu trong biến biến

    Tôi cũng thử đoạn code của bác mà không được. Có bác nào có chiêu hay hơn không?

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •