MS Access CREATE PROCEDURE 또는 .NET에서 Access Macro를 사용하십시오.
과 같은 쿼리를 실행할 수 있어야합니다.SELECT * FROM atable WHERE MyFunc(afield) = "some text"
VB 모듈에서 MyFunc를 작성했지만 "Undefined function 'MyFunc'in 식에 쿼리 결과가 나타납니다." .NET에서 실행될 때
지금까지 읽은 것부터 보안 문제로 인해 Access VB 모듈의 기능을 .NET에서 사용할 수 없습니다. 주제에 대한 정보는 많지 않지만이 길은 끝이 아닌 것처럼 보입니다.
또 다른 가능성은 CREAT PROCEDURE 문을 통해 얻는 것입니다. 또한 작은 문서도 있습니다. http://msdn.microsoft.com/en-us/library/bb177892%28v=office.12%29.aspx
다음 코드는 작동하며 Access에서 쿼리를 만듭니다.
CREATE PROCEDURE test AS SELECT * FROM atable
그러나 그냥 간단한 select 문 - 나는 여러 줄의 VB 코드가 필요하다.
CREATE PROCEDURE 문을 사용하여 다음 코드를 실행했습니다. "잘못된 SQL 문, 예상 된 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' , 또는 'UPDATE'. "
이것은 SQL 'PROCEDURE'문이 있음을 나타냅니다. 따라서
CREATE PROCEDURE TEST AS PROCEDURE
"PROCEDURE 절의 구문 오류"가 발생했습니다.
SQL 'PROCEDURE'문에 대한 정보를 찾을 수 없습니다. 아마도 오류 메시지를 잘못 읽었을 뿐이며 짐승 같은 것도 없습니다. 나는 성명서를 시험하는데 약간의 시간을 할애했지만 더 이상 얻을 수 없다.
값을 저장할 필드를 추가하라는 제안에 대한 응답으로 요구 사항을 확장합니다.
이 기능이 필요한 시나리오는 두 가지입니다.
첫 번째 시나리오에서는 사용자가 필드의 soundex를 검색 할 수 있어야하고 Access에 soundex SQL 함수가 없으므로 사용자가있는 모든 테이블의 모든 필드에 대해 soundex 값을 저장하는 필드를 추가했습니다 입력 된 값처럼 "소리가 나는"레코드를 검색 할 수 있기를 원합니다. 부모 필드 값이 변경 될 때마다 soundex 값을 업데이트합니다. 그것은 오버 헤드의 공정한 비트지만, 나는이 인스턴스에 필요한 것으로 간주.
두 번째 시나리오에서 필자는 필드 값의 공간 연결 간격을 표준화하고 선택적으로 사용자 정의 문자를 제거하려고합니다. 나는 TRIM과 REPLACE 기능의 조합으로 원하는 값을 얻는 것에 아주 가깝게 올 수 있습니다. 이 값은 필드 중 하나의 값에서 단어 사이에 3 개 이상의 공백이 나타나는 경우에만 다를 수 있습니다 (드문 시나리오). 이 기능이 필요한 모든 테이블의 모든 필드에서 추가 필드의 오버 헤드를 정당화하는 것은 어렵습니다. 여분의 공간 문제에 대한 사용자의 피드백을받지 못하면 TRIM & REPLACE 값을 계속 사용합니다.
내 응용 프로그램은 데이터베이스에 무관심합니다 (또는 매우 종교적이지는 않습니다 ... 저는 7). 필자는 공간 정규화와 문자 스트립 핑을 내장 데이터베이스 기능보다 훨씬 효율적으로 수행하는 다른 6 개의 데이터베이스 각각에 대해 UDF를 작성했습니다. VB 매크로로 Access에서 UDF를 작성하고 Access 내에서 해당 매크로를 사용할 수 있지만 .NET에서이 매크로를 사용할 수 없다는 사실에 정말 짜증이납니다.
값을 인덱싱 할 수 있어야하므로 .NET으로 전체 열을 가져온 다음 계산을 수행해도 작동하지 않습니다.
'MyFunc'는 실제로 무엇을합니까?단순하다면 사용 된 인터페이스에 관계없이 사용 가능한 SQL 함수로 대체 될 수 있습니다. –