2016-01-07 2 views
0

Все,Ошибка времени выполнения 3061 Слишком мало параметров. Ожидается 6. Не удалось обновить таблицу из списка

Я запускаю следующий SQL, и я продолжаю получать ошибку 3061. Спасибо всем за замечательную помощь! Я пытался научить себя, и я нахожусь на 10 дней, и о, что я нахожусь для удовольствия!

Private Sub b_Update_Click() 
Dim db As DAO.Database 
Set db = CurrentDb 

strSQL = "UPDATE Main" _ 
     & " SET t_Name = Me.txt_Name, t_Date = Me.txt_Date, t_ContactID = Me.txt_Contact, t_Score = Me.txt_Score, t_Comments = Me.txt_Comments" _ 
     & " WHERE RecordID = Me.lbl_RecordID.Caption" 
     CurrentDb.Execute strSQL 
+0

Вы передаете буквальную строку «Me.txt_Name» (и т. Д.) Вместо самого значения. –

+0

Это текстовые поля, которые следует добавить .value? –

+1

Вам нужно построить фактические значения в строке SQL, поэтому 'strSQL =" UPDATE Main SET t_Name = '"& Me.txt_Name &"', t_Date ... ' –

ответ

0

Я не уверен, но вы можете попробовать somethink как то

если вы knom новое значение для вставки в базу данных попробовать с синтаксисом, как этот

UPDATE table 
SET Users.name = 'NewName', 
    Users.address = 'MyNewAdresse' 
WHERE Users.id_User = 10; 

Теперь, если вы хотите использовать форму (PHP) вы должны использовать этот

if(isset($_REQUEST["id_user" ])) {$id_user = $_REQUEST["id_user" ];} 
else {$id_user = "" ;} 
if(isset($_REQUEST["name" ])) {$name= $_REQUEST["name" ];} 
else {$name = "" ;} 
if(isset($_REQUEST["address" ])) {$address= $_REQUEST["adress" ];} 
else {$adress= "" ;} 

если вы используете м ysql Таблица UPDATE SET Users.name = '$ name', Users.address = '$ adress' WHERE Users.id_User = 10;

я не знаю, VBA, но я буду стараться помочь вам

+0

Ну, я, возможно, принял неверный подход. У меня есть форма, и я помещаю в нее список. Когда они нажимают на поиск, я использую источник строк для отображения значений в списке. Я хочу использовать событие двойного щелчка, чтобы отобразить информацию в файле f orm .... –

+0

Я подготовил пример формы со списком с примером того, как извлекать данные, и я отправляю – DelNC

+0

Wow. Это было бы прекрасно! Спасибо! –

0

Переходя от моего комментария, сначала нужно объявить strSQL в качестве переменной строки. Где ваша ошибка ожидает 6 значений, а доступ не знает, что они собой представляют. Это связано с тем, что объекты формы должны находиться вне котировок SQL-запроса, иначе (как в этом случае) они будут считать, что они являются переменными и, очевидно, не определены. Ожидаемые 6 - это 5 полей формы плюс 'strSQL'.

Private Sub b_Update_Click() 
Dim db As DAO.Database 
dim strSQL as string 
Set db = CurrentDb 

strSQL = "UPDATE Main" & _ 
     " SET t_Name = '" & Me.txt_Name & "'," & _ 
     " t_Date =#" & Me.txt_Date & "#," & _ 
     " t_ContactID =" & Me.txt_Contact & "," & _ 
     " t_Score =" & Me.txt_Score & "," & _ 
     " t_Comments = '" & Me.txt_Comments & "'," & _ 
     " WHERE RecordID = '" & Me.lbl_RecordID.Caption & "';" 

     CurrentDb.Execute strSQL 
end sub 

Обратите внимание, как я использовал двойные кавычки, чтобы поместить поля формы вне строки запроса, чтобы доступ знал, что они не являются переменными. Если ваше поле является строкой, ему нужно инкапсулировать в одинарные кавычки, например 'string'. Если у вас есть поле даты, ему необходимо инкапсулировать в числовые знаки, например #date#, а числа/целые числа не требуют инкапсуляции.

Посмотрите на код, который я сделал, и вы можете видеть, что я использовал эти одинарные кавычки и знаки количества, чтобы инкапсулировать определенные поля. Я догадался, основываясь на именах полей, таких как ID. Возможно, у меня есть некоторые ошибки, поэтому измените, где это применимо ... Или комментарий, и я исправлю свой ответ.

+0

Это замечательно. Большое вам спасибо за то, что нашли время, чтобы сломать его. Я получаю синтаксическую ошибку. Единственными полями, которые содержат числа, являются идентификатор контакта и оценка. Кроме того, t_Comments имеет несколько строк, которые могут вызвать проблему? Опять же, я ценю то, что вы делаете. –

+0

Я скоро посмотрю на синтаксис, я не уверен, возникла ли синтаксическая ошибка. любой синтаксический код ошибки и т. д.? Нет. Я не думаю, что многострочные текстовые поля могут вызвать проблему, если это просто текстовое поле, возможно, для символов не более 255? – LiamH

+0

Да, они под 255. Я отправлю конкретную ошибку. –

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