stuck on MS Access :(
5 отговора
129 прегледа
stuck on MS Access :(
здрасти,
имам 2 проблема с MS Access, които са ми сериозен "препъни-камък". Ако можете да помогнете със съвет или информация ще е чудесно
Имам една програмка /писана е на C++/, която обработва данни, които от своя страна се съхраняват в MySQL DB. Сега ми се иска да разширя функционалността, като добавя възможност за работа и с Access, но ... егати проблема!!! Пускам едно SQL query, което да изведе от таблица "some_table" всички записи, чиито полета "some_field_1" и "some_field_2" съдържат определен substring (например: "some_value"). Пиша си аз:
"SELECT * FROM some_table WHERE some_field_1 LIKE '*some_value*' OR some_field_2 LIKE '*some_value*' ORDER BY some_other_field ASC"
такааа..... до тук добре. Програмата подава заявката, резултатът се изобразява на екрана, но о ужас!!!
В споменатите полета няма и помен от търсената стойност. Как става тоя номер?? Къде бъркам по дяволите?? В интерес на истината, забелязъл съм, че когато в някой от записите съществува търсения стринг, тогава всичко си е ОК и се показват само правилни резултати, но ако не бъде намерен такъм стринг - лошо.
Някакви идеи?
Другия въпрос или по-скоро проблем е свързан с ограниченията на Access. Четох в документацията на програмата, че когато става дума за използване на "WHERE", могат да се навържат до 40 израза. А ако трябва да са повече, групирани с "OR"???
Да речем че:
"SELECT f1, f2, f3 FROM tbl WHERE f1=x OR f2=y ... f67=ff ..."
или пък ...
"SELECT f1, f2, f3 FROM tbl WHERE f1=5 OR f1=17 ... f1=250 ..."
Сега, това е съвсем хипопетичен казус. Възможно е никога да не се наложи да се ползва такова обемисто query, но не ми се иска да рискувам. Възможно ли е това ограничение да се заобиколи по някакъв начин? Със сигурност има алтернативни варианти, но в този момент не се сещам за нито един от тях...
HELP!!!
имам 2 проблема с MS Access, които са ми сериозен "препъни-камък". Ако можете да помогнете със съвет или информация ще е чудесно
Имам една програмка /писана е на C++/, която обработва данни, които от своя страна се съхраняват в MySQL DB. Сега ми се иска да разширя функционалността, като добавя възможност за работа и с Access, но ... егати проблема!!! Пускам едно SQL query, което да изведе от таблица "some_table" всички записи, чиито полета "some_field_1" и "some_field_2" съдържат определен substring (например: "some_value"). Пиша си аз:
"SELECT * FROM some_table WHERE some_field_1 LIKE '*some_value*' OR some_field_2 LIKE '*some_value*' ORDER BY some_other_field ASC"
такааа..... до тук добре. Програмата подава заявката, резултатът се изобразява на екрана, но о ужас!!!
Някакви идеи?
Другия въпрос или по-скоро проблем е свързан с ограниченията на Access. Четох в документацията на програмата, че когато става дума за използване на "WHERE", могат да се навържат до 40 израза. А ако трябва да са повече, групирани с "OR"???
Да речем че:
"SELECT f1, f2, f3 FROM tbl WHERE f1=x OR f2=y ... f67=ff ..."
или пък ...
"SELECT f1, f2, f3 FROM tbl WHERE f1=5 OR f1=17 ... f1=250 ..."
Сега, това е съвсем хипопетичен казус. Възможно е никога да не се наложи да се ползва такова обемисто query, но не ми се иска да рискувам. Възможно ли е това ограничение да се заобиколи по някакъв начин? Със сигурност има алтернативни варианти, но в този момент не се сещам за нито един от тях...
HELP!!!
Re: stuck on MS Access :(
ами ако ползваш DAO или ADO има филтър на данните , но това е по-бавно. Но по-добре прочети малко за UNION. Значително по-бързо - повярвай
Re: stuck on MS Access :(
SELECT tbl_Efficiency.*
FROM tbl_Efficiency
WHERE (((tbl_Efficiency.Items) Like "*fff*"));
при мен работи чудно.......опитай да смениш * с % ?
и кажи ко става?
апропо, пробвах и с апостров ' на мястото на кавичките, пак работи...
FROM tbl_Efficiency
WHERE (((tbl_Efficiency.Items) Like "*fff*"));
при мен работи чудно.......опитай да смениш * с % ?
и кажи ко става?
апропо, пробвах и с апостров ' на мястото на кавичките, пак работи...
Re: stuck on MS Access :(
ами, всъщност си прав - ползвам DAO, а що се отнася до UNION ... не ми беше дошло наум. Мерси за идеята! Мисля, че това ще има приложение и в други части на програмата.
Re: stuck on MS Access :(
първоначално го бях направил така (с "%") вместо с "*", но не се получи и затова се порових малко в MSDN-а. Там е записано следното:
You can use the Like operator to find values in a field that match the pattern you specify. For pattern, you can specify the complete value (for example, Like "Smith"), or you can use wildcard characters to find a range of values (for example, Like "Sm*").
In an expression, you can use the Like operator to compare a field value to a string expression. For example, if you enter Like "C*" in an SQL query, the query returns all field values beginning with the letter C. In a parameter query, you can prompt the user for a pattern to search for.
това обаче се отнасяло само да DAO, но така или иначе, аз ползвам именно него. Иначе се ползва "%", каквато беше и моята информация. Както и да е ... Странното тук е, че при заявка, подадена със същия синтаксис, но с критерий написан на латиница, всичко си е наред. Пусна ли заявка с кирилица и нещата се объркват. И още нещо, ако стринга, който се търси е 2-3 знака, проблемите са още по-големи, а при 5-6 знака (на кирилица) вече има относителна точност, въпреки, че и при това положение има 2-3 паразитни записа от общо 50 (примерно), които не съдържат търсения стринг.
Е, това не мога да го разбера и това си е
Въпреки това, благодаря ти за помощта, явно аз съм оплескал на някое друго място във функцията, иначе просто няма логика да не работи... Ей сегичка ще я прегледам още веднъж (ама е доста дълга м.... й)
You can use the Like operator to find values in a field that match the pattern you specify. For pattern, you can specify the complete value (for example, Like "Smith"), or you can use wildcard characters to find a range of values (for example, Like "Sm*").
In an expression, you can use the Like operator to compare a field value to a string expression. For example, if you enter Like "C*" in an SQL query, the query returns all field values beginning with the letter C. In a parameter query, you can prompt the user for a pattern to search for.
това обаче се отнасяло само да DAO, но така или иначе, аз ползвам именно него. Иначе се ползва "%", каквато беше и моята информация. Както и да е ... Странното тук е, че при заявка, подадена със същия синтаксис, но с критерий написан на латиница, всичко си е наред. Пусна ли заявка с кирилица и нещата се объркват. И още нещо, ако стринга, който се търси е 2-3 знака, проблемите са още по-големи, а при 5-6 знака (на кирилица) вече има относителна точност, въпреки, че и при това положение има 2-3 паразитни записа от общо 50 (примерно), които не съдържат търсения стринг.
Е, това не мога да го разбера и това си е
Въпреки това, благодаря ти за помощта, явно аз съм оплескал на някое друго място във функцията, иначе просто няма логика да не работи... Ей сегичка ще я прегледам още веднъж (ама е доста дълга м.... й)
това по принцип би трябвало да го знам...
пробвах и с киркилица, работи си чудно.....
ако има проблем - не е в аксеса (не че го обичам, ама работи)
огледай декларацията на стринговете, как ги предаваш
разпечатай ги в последния момент....виж да не се наакват,
имам някакви далечни спомени, че някога едни кодови таблици се кодираха правилно до някъде....например до буква Р или С и от там нататък мазано......
ако има проблем - не е в аксеса (не че го обичам, ама работи)
огледай декларацията на стринговете, как ги предаваш
разпечатай ги в последния момент....виж да не се наакват,
имам някакви далечни спомени, че някога едни кодови таблици се кодираха правилно до някъде....например до буква Р или С и от там нататък мазано......