|
|
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
У меня на форме есть текстовые поля и поля со списком, юзер должон их заполнить, а потом жмакнуть на кнопку и в бд должна добавиться запись, вот сокращенный вариант кода (без проверок на незаполненность и т.д.) Private Sub btnAdd_Click() Dim NewsPaper As Boolean, PeriodText As String Dim SQLStr As String lstAddType.SetFocus If (lstAddType.Text = "ãàçåòà") Then NewsPaper = True Else NewsPaper = False End If SQLStr = "INSERT INTO PeriodMain(Title,YearPublication,Number,Rubric," _ & "TypeId,Country,PodpIndex" SQLStr = SQLStr & ",Frequency)VALUES(" SQLStr = SQLStr & CStr(lstAddName.Value) & "," SQLStr = SQLStr & txtAddYear.Text & "," SQLStr = SQLStr & txtAddNumber.Text & "," SQLStr = SQLStr & CStr(lstAddRubric.Value) & "," SQLStr = SQLStr & CStr(lstAddType.Value) & "," SQLStr = SQLStr & CStr(lstAddCountry.Value) & "," SQLStr = SQLStr & txtAddPodpIndex.Text SQLStr = SQLStr & "," & txtAddPeriod.Text & ");" End If DoCmd.RunSQL SQLStr В результате выполнения манипуляций со строкой получайтся следующее: "INSERT INTO PeriodMain(Title,YearPublication,Number,Rubric,TypeId,Country,PodpIndex,Frequency)VALUES(6,2003,233,1,2,1,23456,1000);" и выдается ошибка 3134 - Ошибка инструкции в INSERT INTO, а если этот запрос закинуть в QueryAnaliser, он пишет, что слишком длинное выражение и оно ограничено 128 символами, если убрать кавычки, то все выполняется, соответственно ? как можно запустить выполнение данного запроса из VBA БД - MSSQLServer 2000 End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 12:08:23 |
|
||
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
авторесли убрать кавычки, то все выполняется Какие кавычки??? Где выполняется??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 12:10:43 |
|
||
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
Кавычки в Query Analiser, которые там есть при копировании значения переменной SQLStr из окошка Watch установленного на ней ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 12:14:39 |
|
||
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
В ощем вопрос можно задать упрощенно: Как выполнить из вба запрос, содержащийся в строковой переменной, который содержит более 128 символов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 12:23:43 |
|
||
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
CurrentDb.Execute - не должно быть никакого ограничения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 12:27:11 |
|
||
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
Т.е. Не получается сделать даже следующее: Код: plaintext 1. 2. 3. 4. А этот запрос в Enterprise Manager Выполняется без проблем, что-то мне сдается, будто строка из VBA передается с кавычками, а на сервере какие-то установки воспринимают ее как какое-то имя, что делать не знаю, помогите!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 12:30:40 |
|
||
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
автор CurrentDb.Execute - не должно быть никакого ограничения. Пробовал, та же ошибка, боюсь виноват не вба , а настройки сервера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 12:34:01 |
|
||
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
Блин переназвал поля в таблице на более короткие, теперь запрос влазит, но это не выход, пока оставлю так, а потом или удастся переубедить народ сделать это на плюсах или как-то надо что-то думать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2004, 14:09:45 |
|
||
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
Есть таблица dolzhnost, в ней всего 2 поля: ID и ДОЛЖНОСТЬ. В листбоксе формы они видны, хочется ввести новую с помощью текстбокса (см. пример). Проще говоря, юзер вводит новую должность, жмет ВВОД, а программа должна проверить, есть ли уже такая должность, и если нет, добавить ей. Так вот с кодом запроса и запарка - как правильно выполнить инструкцию SQL? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2004, 12:36:30 |
|
||
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
Хорошо бы начать с того, что всем всегда рекомендуется делать: - adp - mdb? - версия офиса. Если adp , то строковые переменные заключаются в апострофы Код: plaintext выполнение запроса Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2004, 12:46:56 |
|
||
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
ВиталХорошо бы начать с того, что всем всегда рекомендуется делать: - adp - mdb? - версия офиса. Приму к сведению;) База mdb, офис XP. выполнение запроса Код: plaintext А вот тут будте добры поподробнее. Я использую doCmd.RunSQL с переданной строкой запроса, но выполнение его спотыкается на ошибке №2342 "Для макрокоманды ЗапускЗапросаSQL требуется аргумент, состоящий из инструкции запроса". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2004, 12:57:09 |
|
||
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
Код: plaintext Если чистый мэдэбэшник, то попробуйте как посоветовал Владимир Саныч Код: plaintext Хотя в этой ситуации я предпочел бы добавлять через рекордсет, но это дело вкуса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2004, 13:10:13 |
|
||
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
gedeonТ.е. Не получается сделать даже следующее: Код: plaintext 1. 2. 3. 4. А этот запрос в Enterprise Manager Выполняется без проблем, что-то мне сдается, будто строка из VBA передается с кавычками, а на сервере какие-то установки воспринимают ее как какое-то имя, что делать не знаю, помогите!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Может попробовать все имена полей заключить в квадратные скобки? Код: plaintext 1. 2. 3. 4. А вообще-то я бы посоветовал скопировать эту строку SQL в запрос Access, попытаться сохранить и посмотреть, на что ругаться будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2004, 13:14:11 |
|
||
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
Витал Код: plaintext нет, чистый mdb, хотя будь моя воля, все бы сделал на Web[Perl] + SQLServer2000;-) А в Акцесе я не силен, только учусь, поэтому много чего в базе сделано не через код VBA (эти самые рекордсеты - вот бы знать, с чем его едят и как привязать к листбоксу, к форме и еще есть много вопросов ;-))) [/quot] Хотя в этой ситуации я предпочел бы добавлять через рекордсет, но это дело вкуса.[/quot] вкус к программированию на VBA у меня появится, когда я стану более-менее в нем разбираться, а пока что я стараюсь сделать так, как сделали бы профессионалы (вроде вас и Саныча), а так как за неимением опыта и знающего чела под рукой - спрашиваю вас;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2004, 13:22:50 |
|
||
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
авторнет, чистый mdb, А каким боком здесь ентерпрайз с анализером? Таблицы в файле аксеса или на серваке (SQL server)? На всяки пожарный - как с рекордсетом управиться: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. не забудь в референсис библиотеку Адо подключить. :о) Успеха. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2004, 13:52:26 |
|
||
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
INSERT INTO tabl ( Number ) VALUES (0); - ашибка INSERT INTO tabl ( [Number] ) VALUES (0); - работает см. зарезервированные слова jet авторDOUBLE PRECISION, FLOAT DOUBLE FLOAT, FLOAT8, IEEEDOUBLE, NUMBER, NUMERIC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2004, 13:53:06 |
|
||
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
Витал авторнет, чистый mdb, А каким боком здесь ентерпрайз с анализером? Таблицы в файле аксеса или на серваке (SQL server)? тут небольшая неувязка получилась. Мой вопрос не относится к предыдущему, в котором упоминается SQLServer;) у меня локальная база mdb, в которой мне нужно вставить запрос в VBA, проанализировать и выдать некоторое сообщение. Вот и все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2004, 14:17:27 |
|
||
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
автору меня локальная база mdb, в которой мне нужно вставить запрос в VBA, проанализировать и выдать некоторое сообщение Все что я написал про рекордсет - годится и для решения твоей проблемы (добавленние новой должности?). Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2004, 14:54:28 |
|
||
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
Все что я написал про рекордсет - годится и для решения твоей проблемы (добавленние новой должности?). мдя, либо я совсем тупой (ламер то бишь), либо плохому танцору ноги мешают... Сделал все как вы сказали, в коде разобрался, все логически понятно что куда: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. но вываливается такая фигня: В таблице dolzhnost.Должность типа Text (50), введенная строка гораздо меньше, что к чему - не пойму... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2004, 15:25:32 |
|
||
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
никому не интересно или больше мыслей нету? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2004, 10:54:35 |
|
||
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
Orlicникому не интересно или больше мыслей нету? Ecть :) Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2004, 11:11:33 |
|
||
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
(c)VIG Ecть :) Код: plaintext сейчас попробую... И вообще, как я понял, без чтения вышеуказанного Кена Гетца создавать более-менее порядочную БД (я имею ввиду использование VBA, а не стандартных мастеров) бесполезно - разобьешься о подводные рифы мелких проблем, которые как острые зубы пираний грызут программистский ум... Эх, выложит начальство тысящу, или зажмотит?:-) (лирической отступление) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2004, 13:22:16 |
|
||
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
Усе, благодаря общим усилиям и пытливому уму, запрос заработал. Кому интересно - вот код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Теперь буду биться над ьем, как из этого листбокса удалить выделенную запись ;-) Есть идеи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2004, 14:50:57 |
|
||
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
Я не поздно "включился"? Если в таблице, в свойствах поля стоит "индексация без повторов" (не дословно :), то по строке "INSERT ..." новая запись не добавится!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2004, 15:02:21 |
|
||
|
Запара с выполнением запроса из VBA
|
|||
|---|---|---|---|
|
#18+
ИМХО - нет смысла назыать форму и делать заголовок одинаковыми, а для корректировки/удаления лучше предусмотреть отдельную форму! А удалять можно запросом "DELETE..." - синтаксис где-то есть, правда в справке я его нашел лишь один раз - как - не помню (быстрее в интернете), либо кнопкой с визардом "удаление записи". Ок? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2004, 15:28:41 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32710170&tid=1670568]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
86ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 416ms |

| 0 / 0 |
