![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с вставкой записи в MSAccess базу [D7, MSAccess]
Checist [root] © (2005-02-01 21:22:00)Пытаюсь через TQuery:
DMod.QContAdd.Close;
DMod.QContAdd.SQL.Clear;
DMod.QContAdd.SQL.Add('INSERT INTO TabCont(CompName) VALUES("NComp")');
DMod.QContAdd.Prepare;
with DMod.QContAdd.Params.CreateParam(ftString, 'NComp', ptInput) do AsString := NComp.Text;
DMod.QContAdd.UpdateStatus;
ShowMessage(DMod.QContAdd.SQL.Text);
DMod.QContAdd.ExecSQL;
Вылетает ошибка НЕВОЗМОЖНО НАЙТИ ОБЪЕКТ.
Из базы нормально считываю. По дефолту в Query SQL и Params пусты, база подключена на ODBS
Checist [root] (2005-02-02 20:59:00) [1]TabCont(Comp, Cont, Tel, TMob, TWork, Adress, Text) - колонка называется Text.
А как надо?
Соловьев (2005-02-02 20:35:00) [2]
> SQL.SQL.Text := 'INSERT INTO TabCont(Comp, Cont, Tel, TMob,
> TWork, Adress, Text) VALUES(:P0,:P1,:P2,:P3,:P4,:P5,:P6)';
Text?
Checist [root] (2005-02-02 20:17:00) [3]А при использовании нескольких параметров вылетает ошибка в SQL синтаксе:
SQL.Close;
SQL.SQL.Clear;
SQL.SQL.Text := 'INSERT INTO TabCont(Comp, Cont, Tel, TMob, TWork, Adress, Text) VALUES(:P0,:P1,:P2,:P3,:P4,:P5,:P6)';
SQL.Params[0].AsString := NComp.Text;
SQL.Params[1].AsString := NName.Text + ' ' + NSurn.Text + ' ' + NSecName.Text;
SQL.Params[2].AsString := NTel.Text;
SQL.Params[3].AsString := NMob.Text;
SQL.Params[4].AsString := NWork.Text;
SQL.Params[5].AsString := NADr.Text;
SQL.Params[6].AsString := NText.Text;
SQL.ExecSQL;
Соловьев (2005-02-02 12:36:00) [4]
> DMod.QContAdd.
имхо, инкапсуляцию почитай.
Задатки от сюда- http://www.delphikingdom.com/asp/viewitem.asp?catalogid=724
Checist [root] (2005-02-02 12:33:00) [5]Спасибо теперь все нормально!!!
Соловьев (2005-02-02 12:27:00) [6]TQuery.ParamCheck = true?
Checist [root] (2005-02-02 12:26:00) [7]Если точно как у вас то ошибка "List out of bounds"
Соловьев (2005-02-02 12:23:00) [8]
> DMod.QContAdd.Params.CreateParam(ftString,'NComp',ptInput);
> DMod.QContAdd.Params[0].AsString := NComp.Text;
> DMod.QContAdd.SQL.Text := 'INSERT INTO TabCont (CompName)
> VALUES (:NComp)';
где такое написано в моем посте???
Checist [root] (2005-02-02 12:22:00) [9]DMod.QContAdd.Close;
DMod.QContAdd.SQL.Clear;
DMod.QContAdd.Params.CreateParam(ftString,'NComp',ptInput);
DMod.QContAdd.Params[0].AsString := NComp.Text;
DMod.QContAdd.SQL.Text := 'INSERT INTO TabCont (CompName) VALUES (:NComp)';
DMod.QContAdd.ExecSQL;
Та же ошибка, а если бtз CreateParam, то List out of bounds!
Нет у вас мелкой проги примера, с использованием Query
Соловьев (2005-02-02 12:17:00) [10]DMod.QContAdd.Close;
DMod.QContAdd.SQL.Clear;
DMod.QContAdd.SQL.Text := 'INSERT INTO TabCont (CompName) VALUES (:NComp)';
DMod.QContAdd.Params[0].AsString := NComp.Text;
DMod.QContAdd.ExecSQL;
Checist [root] (2005-02-02 12:15:00) [11]Не проходит пишет ОБъект не найдед, я делаю через параметр:
DMod.QContAdd.Close;
DMod.QContAdd.SQL.Clear;
with DMod.QContAdd.Params.CreateParam(ftString,'NComp',ptInput) do AsString := NComp.Text;
DMod.QContAdd.SQL.Text := 'INSERT INTO TabCont (CompName) VALUES (:NComp)';
DMod.QContAdd.ExecSQL;
Соловьев (2005-02-02 12:11:00) [12]
> кроме Query
TADODataSet и TADOCommand и только
INSERT INTO TabCont(CompName) VALUES( 'NComp ')
Checist [root] (2005-02-02 12:09:00) [13]Но таблица есть. И если свойство SQL заполнить в процессе разработки, то вес ОК... А как сделать это в процессе выполнения... Напишите простой пример работающего SQL запроса для вставки записи, какие компоненты кроме Query надо использовать?
USTAS (2005-02-02 09:36:00) [14]это строка запроса
INSERT INTO TabCont(CompName) VALUES("NComp")
в новой записи в таблице TabCont установит значение для поля CompName равное NComp
если ты хочешь использовать параметры то строка в запросе на добавление записи должна выглядеть таким образом
INSERT INTO TabCont(CompName) VALUES(:NComp)
соответсвенно строки
DMod.QContAdd.Prepare;
with DMod.QContAdd.Params.CreateParam(ftString, 'NComp', ptInput) do AsString := NComp.Text;
DMod.QContAdd.UpdateStatus;
можно удалить, а вместо них использовать
QContAdd.ParamByName("NComp").Value := NComp.Text;
"Вылетает ошибка НЕВОЗМОЖНО НАЙТИ ОБЪЕКТ" - обычно такая ошибка вылетает если обращаешся к несуществующей таблице.