У меня есть подчиненная форма в главной форме, которая настроена на просмотр таблицы данных и извлекает данные из базы данных SQL Server на основе предоставленных параметров форм.
Это означает, что при выборе другой группы в поле со спискомили date из средства выбора даты, помещает соответствующую информацию в таблицу данных.
Пользователь должен иметь возможность манипулировать логическим полем в данных, и на данный момент я нашел единственный способ сделать эти данные единственным способом, который я нашел. загрузить и сохранить его обновляемым - это написать запрос в свойстве .RecordSource
в VBA полностью, как показано ниже:
Set mf = mainFrm
S = " SELECT t.Date, t.Team, s.Username, t.Reference, t.Status, t.Reason, t.Completed " & _
" FROM [ODBC;DRIVER=SQL Server;SERVER=<SERVERNAME>;Integrated_Security=SSPI;DATABASE=<DBNAME>].testTbl as t " & _
" INNER JOIN [ODBC;DRIVER=SQL Server;SERVER=SRVFOSABESQL01;Integrated_Security=SSPI;DATABASE=MO_Productivity].staffTbl as s ON t.emp_id = s.emp_id " & _
" WHERE t.Team = '" & tmName & "' AND t.Date = #" & wkEnd & "# " & _
" ORDER BY t.Reference; "
mf.subFrm.Form.RecordSource = S
Очевидно, что огромной проблемой здесь является то, что предоставленные переменные открыты для внедрения SQL, не являютсябудет экранирован и, очевидно, разоблачит строку подключения. Все это можно обойти, но, безусловно, не чувствуется «лучшая практика».
Я пытался использовать свойство .Recordset
для получения данных с сервера с помощью сквозного параметризованного запроса / хранимой процедуры. , но, похоже, это односторонняя операция только для чтения, позволяющая помещать данные и делать их «несвязанными» или не обновляемыми.
Какой правильный и более безопасный способ получения этих данных из SQL Serverтак что его можно поместить в RecordSource
, чтобы сделать его обновляемым?