AdoTable을 사용하여 데이터베이스 (mdb)와 DataSource에 연결했습니다. 이 데이터 소스는 DBGrid에서 사용됩니다 ...병합 된 열의 AdoDB 필터
사용자 입력을 기반으로 AdoTable을 필터링하려고했습니다. 이름, 성 및 ID라는 중요한 열이 있습니다. 나는 임시 해결책으로이 같은 내놓았다 : 그것은 내가 이름을 검색 때 (...하고 싶은 및 surename 것이 정확히 무엇을하지 않습니다
AdoTable.filter:='surname like ' +
QuotedStr('%'+edit1.text+'%')+' or name like ' +
QuotedStr('%'+edit1.text+'%')+' or ID like ' +
QuotedStr('%'+edit1.text+'%');
AdoTable.filtered:=true;
그것은하지 작업하지만하지 않습니다 하나의 열에 만 보이는대로 찾을 수 있음). 그래서 나중에 나는이에 내 코드를 수정 :
이제AdoTable.filter:='surname & " " & name like ' +
QuotedStr('%'+edit1.text+'%')+' or name & " " & surname like ' +
QuotedStr('%'+edit1.text+'%')+' or ID like ' +
QuotedStr('%'+edit1.text+'%');
AdoTable.filtered:=true;
이 내가하고 싶은 것을 exacly 할 것이다, 그러나 예외 (EOleException 제기 인수, 잘못된 형식의 허용 범위를 벗어나거나 서로 충돌하고있다). SQL 명령에서 where 절로 작동해야한다고 생각하여 꽤 suprises입니다 (그리고 명령으로 완벽하게 작동합니다).
'&'을 '+'로 바꿔서 시도해 보았습니다. 입력 텍스트를 나눌 수는 있지만 그럴 필요가 없습니다. Robin van Persie, Ahmad ibn Hanbal 등의 이름을 사용하면 제대로 작동하지 않을 것입니다.
또는 전체 프로그램을 다시 쓸 수 있습니다. 테이블 대신 쿼리를 사용하고 싶지만 실제로 그렇게하고 싶지는 않습니다. 즉, 새로운 레코드 세트를 EVERYTIME으로 사용자가 편집하는 대신 edit1.text를 변경하게 될 것입니다.
아이디어가 있으십니까?
편집 :이
select * from person where surname & " " & name like '%John Smith%' or name & " " & surname like '%John Smith%' or ID like '%John Smith%'
필터는 다음과 같습니다 (그리고 예외 트리거) 'HN 스미스'대신이 될 수 있다고
surname & " " & name like '%John Smith%' or name & " " & surname like '%John Smith%' or ID like '%John Smith%'
주처럼 작동 때문에 명령이 보인다 'John Smith'도 'Kahn Smithers'등을 찾을 수 있습니다.
일부 알 수없는 부분이 있습니다 : ID 유형은 무엇입니까? 코드는 그것이 올바르지 않은 것으로 들리는 문자열이라고 가정합니다. 대부분 ID는 숫자입니다. 두 번째 : 데이터베이스가 무엇입니까? 예를 들면 SQL Express '%'가 정확합니다. 액세스를 사용할 때 '*'를 사용해야합니다. 결과 필터 문자열을 표시 할 수 있습니까? –
ID는 실제로 문자열입니다. 그것은 '123abc'와 같은 것일 수 있습니다. 그리고 Access에서 '%'('*'는 내가 시도하지 않음)를 사용한다는 사실을 발견했습니다. 결과 필터는 ''John Smith % ''또는 ''John Smith % ''와 같은 성 및 ''% John Smith % ''와 같은 성은 '성 & 이름이 '% 0123abcd %' '또는 이름이' '% 0123abcd %' '또는 ID가' '% 0123abcd %' '인 경우 이름 및 성 또는'성 '&'을 (를) 검색하고 있습니다. ID –
을 찾고 있습니다 답변 해답을 – kobik