우리는 간단한 액세스 데이터베이스를 가지고 있으며 직원의 멤버를 선택하기 위해서만 폼의 단추를 사용할 수 있습니다. (버튼에 연결된 이벤트가 있음). 나는 별도의 테이블에 버튼을 클릭 할 수있는 직원의 사용자 이름을 저장하고 싶습니다.MS Access 2007, 현재 사용자를 테이블과 대조
사용자가 테이블에 사용자 이름이 있는지 확인하기 위해 간단한 쿼리를 수행하고 결과에 따라 버튼의 활성화 상태를 설정합니다.
내 배경은 C# 및 SQL Server이지만 VBA 및 액세스는 새로운 것이므로이 환경의 단점을 해결하기 위해 고심하고 있습니다.
advapi32.dll에서 GetUserNameA를 호출하여 fOSUserName
문자열로 로그온 한 사용자의 사용자 이름을 얻었지만 가장 간단한 쿼리로 인해 사용자 이름이 테이블에 존재하는지 확인하는 데 어려움을 겪고 있습니다.
매개 변수가 너무 적습니다 :
는Dim strSQL As String
Dim intResult As Integer
Dim db As DAO.Database
Dim rs As Recordset
Set db = CurrentDb
strSQL = "SELECT COUNT(*) FROM [USERS] WHERE [USERS].[NAME] = '" & _
fOSUsername & "'"
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
If Not rs.EOF Then
intResult = rs.Fields(0)
Else
intResult = 0
End If
rs.Close
db.Close
이 오류를 나에게
런타임 오류 '3061'를 제공
db.OpenRecordset
에 실패합니다. 예상 됨 1.
누구든지 몇 가지 지침을 제공 할 수 있습니까? 당신이 그것을 사용하는 방식에 완전히 익숙하지 해요,하지만 난 항상 이런 식으로했던
죄송합니다. '& _' /'& _'은 내 실수입니다. 나는 그 형식을 향상시키기 위해 줄을 나누어서 엉망으로 만들었다. 이제 수정되었습니다. – Bryan
@Bryan - 또한 fOSUsername 값을 확인하십시오. 예를 들어, 다음과 같이 SQL을 얻으면 런타임 오류도 발생할 수 있습니다. SELECT COUNT (*) FROM TestTable WHERE NewColumn = [username]. [username]은 매개 변수 –
으로 간주 될 것이기 때문에 제가보기에는 문제라고 생각합니다 (내 런타임 오류 텍스트는 매개 변수를 나타냄). 여러 사이트에서 매개 변수를 언급하는 몇 가지 게시물을 보았지만 정직하게 작동하는 방식을 이해하지 못했고 내가 본 예를 통해 많은 성공을 거두지 못했습니다. 솔직히 말해서, 나는 지금이 시간을 보냈을 때 SQL Express 인스턴스와 인터페이스하는 기본 C# 데스크톱 응용 프로그램을 만들었을 것입니다. 지금이 방법이 나에게 가장 좋은 방법이라고 생각하기 시작했습니다. – Bryan