Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запрос SQl на VBA 
:(
    Опции темы
Freazeek
Дата 14.5.2010, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 8.9.2009

Репутация: нет
Всего: нет



День добрый.

Есть табличка с полями: [время], [номер телефона], [фамилия]

Есть форма с текстбоксами "номер" и "фамилия" и кнопкой.

при нажатии на кнопку в поле [время] вносится текущее время, в остальные поля данные из текстбоксов. Все это средствами VBA.

Сейчас это осуществляет следующий код:

Код

Private Sub Кнопка4_Click()
Dim nows As String
Dim Num As String
Dim Peopl As String
Dim sql As String
nows = "'" & Format(Now, "HH:MM DD.MM.YYYY") & "',"
Num = "'" & txNum & "',"
Peopl = "'" & txPeopl & "'"
sql = "insert into tabl1([times],[number],[people]) values (" & nows & Num & Peopl & ")"
DoCmd.RunSQL sql
End Sub


вопрос:
можно ли как то избавиться от необходимости обрамлять каждое значение в апострофы?
или может вообще есть какой нибудь более правильный способ занесения записей с формы в таблицу.

Спасибо. 

upd. Может можно как в екселе создать массив, заполнить его и одной операцией загнать его в таблицу?)

Это сообщение отредактировал(а) Freazeek - 14.5.2010, 16:29

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  test2.rar 12,48 Kb
PM MAIL   Вверх
Akina
Дата 14.5.2010, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Freazeek @  14.5.2010,  17:25 Найти цитируемый пост)
можно ли как то избавиться от необходимости обрамлять каждое значение в апострофы?

Для текстовых литералов - нет.

Цитата(Freazeek @  14.5.2010,  17:25 Найти цитируемый пост)
или может вообще есть какой нибудь более правильный способ занесения записей с формы в таблицу.

Этот способ - правильный. Впрочем, есть ещё куча не менее правильных способов.

Добавлено через 1 минуту и 49 секунд
Цитата(Freazeek @  14.5.2010,  17:25 Найти цитируемый пост)
Может можно как в екселе создать массив, заполнить его и одной операцией загнать его в таблицу?)

А заполняешь его, можно подумать, ты не поэлементно... какая разница ГДЕ?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Freazeek
Дата 14.5.2010, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 8.9.2009

Репутация: нет
Всего: нет



Спасибо. Буду значит разбираться дальше.

В екселе работа с массивами много более эффективна чем напрямую с листом. Например операция:

1. Загнать значения из диапазона ячеек в массив
2. Циклом увеличить каждое значение на 2
3. Вывести массив на лист

на порядок быстрее чем

1. Циклом увеличить значение каждой ячейки в диапазоне на 2.


Вот и подумал что может в аццессе тоже чтото похожее есть, потому и спросил.

Просто ради интереса можно ли в аццесс оптимальней выполнить операцию: "Внести в таблицу числа от 1 до 100" чем:

Код

Sub pp()
    Dim i As Long
    Dim sql As String
    For i = 1 To 100
        sql = "insert into tabl([values]) values ('" & i & "')"
        DoCmd.RunSQL sql
    Next i
End Sub



Это сообщение отредактировал(а) Freazeek - 14.5.2010, 18:17

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  test3.rar 10,72 Kb
PM MAIL   Вверх
Akina
Дата 14.5.2010, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Freazeek @  14.5.2010,  19:16 Найти цитируемый пост)
В екселе работа с массивами много более эффективна чем напрямую с листом. 

Понятно, что обращение к элементу массива быстрее, чем к свойству объекта.

Цитата(Freazeek @  14.5.2010,  19:16 Найти цитируемый пост)
может в аццессе тоже чтото похожее есть

Увы, рекордсет, в отличие от массива или эксельного листа, не является локальным ресурсом, дадже если всё происходит в рамках одного компьютера. А потому ничего подобного для него и быть не может.

Цитата(Freazeek @  14.5.2010,  19:16 Найти цитируемый пост)
можно ли в аццесс оптимальней выполнить операцию: "Внести в таблицу числа от 1 до 100" чем:

Да, можно. Самый простой вариант:
Код

insert into tabl([values]) values ('1'), ('2'), ('3'), ('4'), ...  ,  ('99'), ('100')



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Freazeek
Дата 16.5.2010, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 8.9.2009

Репутация: нет
Всего: нет



Большое спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0442 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.