Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];

Вниз

Проблема с вставкой записи в MSAccess базу   Найти похожие ветки 

 
Checist [root]   (2005-02-01 21:22) [0]

Пытаюсь через 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


 
USTAS   (2005-02-02 09:36) [1]

это строка запроса
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;

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


 
Checist [root]   (2005-02-02 12:09) [2]

Но таблица есть. И если свойство SQL заполнить в процессе разработки, то вес ОК... А как сделать это в процессе выполнения... Напишите простой пример работающего SQL запроса для вставки записи, какие компоненты кроме Query надо использовать?


 
Соловьев ©   (2005-02-02 12:11) [3]


> кроме Query

TADODataSet и TADOCommand и только

INSERT INTO TabCont(CompName) VALUES("NComp")


 
Checist [root]   (2005-02-02 12:15) [4]

Не проходит пишет ОБъект не найдед, я делаю через параметр:

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:17) [5]

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:22) [6]

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:23) [7]


> 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:26) [8]

Если точно как у вас то ошибка "List out of bounds"


 
Соловьев ©   (2005-02-02 12:27) [9]

TQuery.ParamCheck = true?


 
Checist [root]   (2005-02-02 12:33) [10]

Спасибо теперь все нормально!!!


 
Соловьев ©   (2005-02-02 12:36) [11]


> DMod.QContAdd.

имхо, инкапсуляцию почитай.
Задатки от сюда- http://www.delphikingdom.com/asp/viewitem.asp?catalogid=724


 
Checist [root]   (2005-02-02 20:17) [12]

А при использовании нескольких параметров вылетает ошибка в 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 20:35) [13]


> 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:59) [14]

TabCont(Comp, Cont, Tel, TMob, TWork, Adress, Text) - колонка называется Text.
А как надо?



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.048 c
14-1108385161
mr-jack
2005-02-14 15:46
2005.03.06
saveDialog


4-1106073014
onyx
2005-01-18 21:30
2005.03.06
Диалоговые окна на чистом API


3-1107845359
dreamse
2005-02-08 09:49
2005.03.06
Не пойму как возвратить результат запроса


14-1108377909
}|{yk
2005-02-14 13:45
2005.03.06
Здоровеньки булы! И что тут без меня творилось? :)


1-1108971011
Vyacheslav
2005-02-21 10:30
2005.03.06
Импорт из Excel





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский