2009-09-26 3 views
2

эй, ребята, может кто-нибудь показать мне простой запрос на обновление через vb? Мне нужно добавить новые поля в таблицу (всего 3) и добавить пару текстовых полей в форме, чтобы пользователи могли добавлять дополнительные данные относительно записи (на которой уже основана эта форма).MS Acess 2003 - VBA для обновления SQL-запроса?

Итак, у первой формы есть форму, которая заполняет список, когда пользователь дважды нажимает на выделение из этого списка, он открывает новую форму, так что идентификатор таблицы, привязанной к этой форме что мне нужно добавить эти текстовые поля (все комбинированные поля и текстовые поля относительно одной записи привязаны к активной форме на этой точке, однако все они не связаны. Нажатие кнопки уже есть vb, который сохраняет информацию к таблице). Я не создал этого, однако, он был построен кем-то, которого больше нет, и, по-видимому, лучше, чем я в этом. Моя проблема заключается в том, что существует soooo much vb, который проверяет записи и различные операторы sql на основе case, что я не могу расшифровать его в его простейшей форме.

Так что я искал простой пример обновления sql-оператора в vb, поэтому я могу попытаться разбить это на части.

мне это нужно, чтобы обновить запись на основе ID: SQL WHERE RecordID = me.RecordID

Я на самом деле думал, что я знал, как сделать это на примерах, однако каждый раз, когда я пытаюсь, то попробуйте запустить при нажатии кнопки я получаю ошибку времени выполнения SYNTAX, а отладка просто выделяет часть db.execute (sql). Так что я пытался получить в результате немедленного окно SQL заявления, и она выглядит хорошо для меня:

UPDATE tblMain 
    SET [Name] = "John Doe", 
     [DATE] = #9/30/2009#, 
     [TYPE] = "TypeA", 
WHERE RecordID = 958; 

Могу ли я обновить таблицу без учета для каждого поля в таблице (потому что это один имеет около 15 плюс новый 3, поэтому я игнорирую около 14 полей, но я не хочу, чтобы изменить те или иначе ???

так как всегда, я ценю помощь Yall !! Спасибо

EDIT:

Извините, я всегда забываю об этом .... Я был actaully, пытаясь его DAO ... .

Dim db as DAO.Database 
    Dim sql as String 
    set db = CurrentDb 

и т.д.

+0

Вы используете .NET Framework и свои объекты данных ActiveX .NET (ADO.NET)? –

+0

Потому что VBA и VB.NET идут совсем по-другому, если я правильно помню. Даже у VB6 есть собственный способ делать ADO. –

+0

Вау, это то, что я должен знать, увы, я этого не делаю. самое лучшее, что я могу сказать, что это ОС MS XP, и доступ 00-02/03 я думаю .... тот, где вы работаете в 00, а затем конвертируете в 02/03 ?? иметь смысл? я едва новичок – Justin

ответ

4

Вы были thaaat закрыть! У вас есть простая дополнительная запятая после последней колонки. Избавьтесь от него, и все будет хорошо.

UPDATE tblMain SET 
[Name] = "John Doe", 
[DATE] = #9/30/2009#, 
[TYPE] = "TypeA" 
WHERE RecordID = 958; 

Да, вы можете абсолютно обновить только несколько столбцов, а не все из них. Это лучшая практика, BTW.

И, наконец, считается, что плохая практика именует ваши столбцы после зарезервированных слов, таких как «Имя» и «Дата», но я знаю, что вы унаследовали это.

+0

спасибо! я ценю это. да, эти имена полей, например, на самом деле; слишком много в db для любых неопределенных имен полей! – Justin

2

Вы были мудры, чтобы включить Debug.Print sql в свой код. bpayne уже указал дополнительную запятую в вашем SQL-заявлении.

Я хочу указать еще одну технику устранения неисправностей, которая может оказаться полезной для отладки задач SQL-запроса.

Скопируйте заявление из окна «Немедленное» и вставьте его в SQL-представление нового запроса. Измените запрос в конструкторе запросов до тех пор, пока вы не сможете его обработать, а затем измените код VBA, чтобы создать соответствующий SQL-запрос.

В этом случае вы, возможно, не заметили дополнительную запятую. Тем не менее, вы можете создать еще один новый запрос и создать инструкцию UPDATE с нуля в конструкторе запросов. После того, как вы заработаете, вы можете сравнить его SQL View с провальным запросом.

+0

спасибо! я обычно использую Immediate Window вместо msgbox, потому что для меня это проще, но это только я. Хорошо, поэтому я подумал об этом (копирование результирующего оператора sql из IW и вставка в представление SQL объекта запроса), однако что мне делать со всеми скобками и парой? Я также подумал о том, чтобы выработать инструкцию sql в обратном порядке (взяв ее из представления sql в код vba), но будет ли строка sql в порядке со всеми этими скобками и parn's в vb? спасибо! – Justin

+0

Извините, я не понимаю вашу обеспокоенность по поводу скобок и скобок. RE другой вопрос: Обычно я создаю запрос в конструкторе запросов. Затем используйте VBA для создания инструкции SQL, которая соответствует SQL-представлению запроса. – HansUp

+0

хорошо, что я имел в виду, я изучаю оба (sql и vba и sql в vb), поэтому, иногда, когда я пытаюсь вычислить sql для запросов, которые являются top nth с несколькими таблицами и т. Д. Я должен использовать запрос строитель, чтобы узнать sql. так что я могу использовать этот точный sql в строке vba? потому что из небольшого числа, что я узнал о sql-строках в vba, все парные и скобки, которые существуют в представлении sql, я не уверен, могут ли они работать в строке sql в vba ?? Извините, что это был более общий вопрос и не был специфичным для вышеуказанного запроса .... просто проверяя запросы таким образом. thanks – Justin

Смежные вопросы