
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
14.08.2003, 14:16
|
|||
|---|---|---|---|
FAQ: Формирование строки SQL-запроса в VBA - Final release |
|||
|
#18+
Ниже будет опубликован полный текст Фак\'а просьба не постить ничего в этот тред, а писать сюда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.08.2003, 14:36
|
|||
|---|---|---|---|
FAQ: Формирование строки SQL-запроса в VBA - Final release |
|||
|
#18+
FAQ: Формирование строки SQL-запроса в VBA - Final release \r \r 1. Использование чисел \r \r SQL: \r Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. VBA v1 - для целых чисел. Для дробных чисел это частный случай, только когда системным разделителем является точка.\r VBA v2 - более правильный вариант, т.к. в классическом программировании допускается соединять только строки со строками, тогда как VBA v1 использует неявное преобразование типов, хотя нареканий на этот способ для целых чисел не было. (Пример приведён для случая, когда системным разделителем является запятая.)\r Иногда также используют для преобразования функцию CStr(), но она не всегда применима, т.к. возвращает число в виде строки, где оно записывается через системный разделитель, тогда как SQL в качестве разделителя воспринимает только точку.\r NB! При использовании нетипичных системных разделителей вышеприведённые примеры могут не работать, в этих случаях надо программно заменять системный разделитель на точку. Ниже приводится функция, возвращающая системный разделитель.\r Код: plaintext 1. 2. 3. \r 2. Использование строк \r \r SQL: \r Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. где DoubleQuote() - функция, удваивающая кавычки .\r Пример: \r условие выборки: a"a\'s\r SQL: WHERE field= "a""a\'s" \r VBA v1: strWhere = "WHERE field=""" & "a""""a\'s" & """" \r \r VBA v2: \r Код: plaintext 1. 2. 3. 4. где DoubleApostrophe() - функция, удваивающая апострофы .\r Пример: \r условие выборки: a"a\'s\r SQL: WHERE field= "a""a\'s" \r VBA v2: strWhere = "WHERE field=\'" & "a""a\'\'s" & "\'" \r \r 3. Использование дат \r \r SQL: \r Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. Microsoft JET SQL оперирует датами в американском формате, т.е. именно в вышеуказанном виде Месяц/День/Год.\r Рекомендуется почитать здесь: http://www.sql.ru/faq/faq_topic.aspx?fid=103 о способах хранения даты/времени.\r NB! Не стоит пользоваться преобразованием даты в Integer (или Long), т.к. в Access\'е и в SQL Server\'е одной и той же дате соответствуют разные числа и при сравнении можно получить неожиданный результат.\r \r Обсуждение в форуме ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.08.2003, 15:41
|
|||
|---|---|---|---|
FAQ: Формирование строки SQL-запроса в VBA - Final release |
|||
|
#18+
1. Использование чисел \r \r SQL: \r Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. VBA v1 - для целых чисел. Для дробных чисел это частный случай, только когда системным разделителем является точка.\r VBA v2 - более правильный вариант, т.к. в классическом программировании допускается соединять только строки со строками, тогда как VBA v1 использует неявное преобразование типов, хотя нареканий на этот способ для целых чисел не было. (Пример приведён для случая, когда системным разделителем является запятая.)\r Иногда также используют для преобразования функцию CStr(), но она не всегда применима, т.к. возвращает число в виде строки, где оно записывается через системный разделитель, тогда как SQL в качестве разделителя воспринимает только точку.\r NB! При использовании нетипичных системных разделителей вышеприведённые примеры могут не работать, в этих случаях надо программно заменять системный разделитель на точку. Ниже приводится функция, возвращающая системный разделитель. Код: plaintext 1. 2. \r 2. Использование строк \r \r SQL: \r Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. VBA v1: - где DoubleQuote() - функция, удваивающая кавычки .\r Пример: \r условие выборки: a"a\'s\r SQL: WHERE field= "a""a\'s" \r VBA v1: strWhere = "WHERE field=""" & "a""""a\'s" & """" \r VBA v2: - где DoubleApostrophe() - функция, удваивающая апострофы .\r Пример: \r условие выборки: a"a\'s\r SQL: WHERE field= "a""a\'s" \r VBA v2: strWhere = "WHERE field=\'" & "a""a\'\'s" & "\'" \r \r 3. Использование дат \r \r SQL: \r Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. Microsoft JET SQL оперирует датами в американском формате, т.е. именно в вышеуказанном виде Месяц/День/Год.\r Рекомендуется почитать здесь: http://www.sql.ru/faq/faq_topic.aspx?fid=103 о способах хранения даты/времени.\r NB! Не стоит пользоваться преобразованием даты в Integer (или Long), т.к. в Access\'е и в SQL Server\'е одной и той же дате соответствуют разные числа и при сравнении можно получить неожиданный результат.\r \r Топик, в котором создавался данный FAQ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=45&tablet=1&tid=1679910]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 333ms |

| 0 / 0 |
