Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с вставкой записи в 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;

"Вылетает ошибка НЕВОЗМОЖНО НАЙТИ ОБЪЕКТ" - обычно такая ошибка вылетает если обращаешся к несуществующей таблице.


Наверх

Титульная страница Поиск, карта сайта Написать письмо