Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.11;
Скачать: CL | DM;

Вниз

IBDataset.ParamByName   Найти похожие ветки 

 
Eduard ©   (2002-03-20 11:19) [0]

Здравствуйте, мастаки !
Подскажите, пожалуйста, почему в нижеприведенном коде возникает ошибка "Field "SomeField" not Found . Во-первых, поле такое существует, параметр с таким именем существует, база написана на диалекте 3, все поля и имена таблиц в запросах введены в кавычках.

IBDataSet1.Open;
IBDataSet1.ParamByName("SomeField").AsString := "SomeStringValue";
IBDataSet1.Prepare;
IBDataSet1.Insert;
IBDataSet1.ApplyUpdates;
IBTransaction1.Commit;
IBDataSet1.Open;


Если я что-то упустил, поправьте меня, и я дополню вопрос. Заранее спасибо.


 
Alexandr ©   (2002-03-20 11:25) [1]

бред какой-то написан


 
Eduard ©   (2002-03-20 11:27) [2]

Почему бред ?


 
OlegE ©   (2002-03-20 11:31) [3]

Диалект 3 чувствителен к регистру. Проверь какими символами у тебя набрано SomeField. SomeField и SOMEFIELD - для 3 диалекта разные вещи.


 
Eduard ©   (2002-03-20 11:32) [4]

Написано все в нормальном регистре.


 
Alexandr ©   (2002-03-20 11:32) [5]

слушай, напиши, что ты хотел сделать этим кодом.
А то это просто на набор комманд похоже.
А также напиши, что у тебя написано в selectSQL и InsertSQL


 
Alexandr ©   (2002-03-20 11:33) [6]

и всетаки в нормальном или в нужном (правильном)?


 
Eduard ©   (2002-03-20 11:45) [7]

SelectSQL : select "N", "Monitor" from "Monitors"
InsertSQL : insert into "Monitors"
("Monitors"."N", "Monitors"."Monitor")
values
(:"N", :"Monitor")

Этим кодом я хотел вставить строку "SomeStringValue" в таблицу Monitors


 
Alexandr ©   (2002-03-20 11:54) [8]

values
(:"N", :"Monitor")

тут кавычки ненадо.
т.е.
values
(:N, :Monitor)

а вот это так надо


try
IBDataSet1.Open;
IBDataSet1.Insert;
IBDataSet1.FieldByName("Monitor").AsString := "SomeStringValue";
IBDataSet1.FieldByName("N").AsInteger := N;
IBDataSet1.Post;
IBDataSet1.ApplyUpdates;
IBTransaction1.Commit;
except
IBTransaction1.RollBack;
raise;
end;
IBDataSet1.Open;





 
Eduard ©   (2002-03-20 12:01) [9]

Так получилось:

try
IBDataSet1.Open;
IBDataSet1.Insert;
IBDataSet1.FieldByName("Monitor").AsString := "SomeStringValue";
//IBDataSet1.FieldByName("N").AsInteger := N;
IBDataSet1.Post;
IBDataSet1.ApplyUpdates;
IBTransaction1.Commit;
except
IBTransaction1.RollBack;
raise;
end;
IBDataSet1.Open;


А на кой тогда ParamByName ???


 
Alexandr ©   (2002-03-20 12:10) [10]

дык когда к параметру надо обращаться.
а FieldByname кагда к полю. А тебе надо к полю.


 
Eduard ©   (2002-03-21 09:41) [11]

И все равно я ни черта не понял. Моя цель такова: присвоить значение какого-нибудь Edit.Text параметру :Monitor , затем выполнить InsertSQL, который выглядит как "INSERT INTO "Monitors" ("Monitors"."Monitor")
VALUES (:"Monitor")"
. То, что Вы мне предлагаете - простое присваивание значения полю.


 
Alexandr ©   (2002-03-21 10:46) [12]

дык, у тебя же кэшированные обновления, поэтому компонент при applyUpdates смотрит, в каких записях изменились значения в твоем датасете и сам запускает соответствующие InsertSQL и UpdateSQL на основе твоих изменений и вставок, и какие параметры туда подставлять датасет сам разбирается.


 
Alexandr ©   (2002-03-21 10:50) [13]

да, и еще, чтоб было совсем понятно.
свой InsertSQL можешь записать в TIBQuery,
а там уже вызвать запрос на исполнение (execQuery, по-моему), передав ему параметры через ParamByName



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

Текущий архив: 2002.04.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.009 c
3-32639
Юрий Федоров
2002-03-18 16:52
2002.04.11
Сессия Oracle


14-32956
Dimich
2002-03-04 10:25
2002.04.11
Заземление в учебном классе


1-32794
Danila
2002-03-30 11:44
2002.04.11
Как передать канву в качестве параметра ?


1-32881
Dizer
2002-03-29 16:32
2002.04.11
Разница во времени


1-32767
KvORubin
2002-03-31 06:27
2002.04.11
Как корректно воспроизвести WAV файл (Без TMediaPlayer) ???