Witam.
Chciałbym pobrać dane z bazy dane za pomocą polecenia:
SELECT * FROM TABLELA1 WHERE StrToHex(ARG1)=StrToHex(ARG2)
Dane chciałbym zapisać do obiektu DataSet.
StrToHex() to moja własna funkcja napisana w Accesie, znajduje się w module M1
W samym Accesie ta kwerenda działa. Pokazuje mi poprawne dane. Jednak jeśli chcę wybrać sobie dane w c# za pomocą OleDbCommand to aplikacja się sypie i wyświetla się: Nie zdefiniowana funkcja 'StrToHex' w wyrażeniu.
skoro StrToHex(ARG1) ma być równe StrToHex(ARG2) to chyba możemy założyć, że ARG1 będzie równe ARG2?
Azarien napisał(a)
skoro StrToHex(ARG1) ma być równe StrToHex(ARG2) to chyba możemy założyć, że ARG1 będzie równe ARG2?
Właśnie wg Accesa niekoniecznie. Przy porównaniu nie jest uwzględniana wielkość liter.
Przykładowa kwerenda: SELECT * FROM TABELA1 WHERE ARGUMENT1 = 'Xy'
Pokaże mi wiersze w, których ARGUMENT1 wynosi Xy, XY, xy
Chyba, że w samym Accesie są jakieś opcje porównywania. Albo wbudowane funkcje do porównywania tekstów.
Do tej pory radziłem sobie stosując StrToHex, ale kiedy chcę przejść z kwerend w Accesie na proste aplikacje w C# to przestaje to działać.
Udało mi się to obejść pobierając wszystko i operując na obiektach DataSet ale wolałbym od razu pobrać potrzebne dane.
I jak byś na początku napisał jaki jest cel, a nie tak od d... strony :)
http://support.microsoft.com/kb/244693
massther napisał(a)
I jak byś na początku napisał jaki jest cel, a nie tak od d... strony :)
http://support.microsoft.com/kb/244693
Dzięki.
Rozwiązuje to ten konkretny problem.
Tylko co z sytuacją kiedy własnej funkcji nie da się zastąpić niczym wbudowanym. Czy c# umożliwia przesłanie do Accesa w jakiś sposób zapytań z własnymi funkcjami.
Może da się określić funkcje w zapytaniu jako zewnętrzną , tak żeby c# nie musiał jej znać.
Nie. Bo ty nie korzystasz z Accessa, tylko z JET-SQL-a, a on o istnieniu VBA nic nie wie.