Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2007, 10:26   #1
Edimus
Пользователь
 
Регистрация: 30.10.2007
Сообщений: 20
По умолчанию Delphi и InterBase

---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EDatabaseError with message 'IBQuery1: Cannot modify a read-only dataset'. Process stopped. Use Step or Run to continue.

Не могу понять записать данные в таблицу... подскажиче чего поправить!
Edimus вне форума Ответить с цитированием
Старый 02.11.2007, 18:14   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Edimus Посмотреть сообщение
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EDatabaseError with message 'IBQuery1: Cannot modify a read-only dataset'. Process stopped. Use Step or Run to continue.

Не могу понять записать данные в таблицу... подскажиче чего поправить!
А где проект? Что нам смотреть в целях "поправить"?
Опять надежда на телепатию?
mihali4 вне форума Ответить с цитированием
Старый 02.11.2007, 21:47   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от Edimus Посмотреть сообщение
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EDatabaseError with message 'IBQuery1: Cannot modify a read-only dataset'. Process stopped. Use Step or Run to continue.

Не могу понять записать данные в таблицу... подскажиче чего поправить!
ну так запросы подрубил на вставку, изменение, обновление записей? Там какая-то компонента пдополнительная есть, Хотя я предпочитаю использовать для этих целей один IBDataSet

почитай тута: http://ibase.ru/devinfo/ibx.htm
pu4koff вне форума Ответить с цитированием
Старый 03.11.2007, 22:22   #4
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

Цитата:
Сообщение от Edimus Посмотреть сообщение
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EDatabaseError with message 'IBQuery1: Cannot modify a read-only dataset'. Process stopped. Use Step or Run to continue.

Не могу понять записать данные в таблицу... подскажиче чего поправить!
Код вышли.... Такая ошибка выдается, когда свойсво Read only = true
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
Pitbull вне форума Ответить с цитированием
Старый 04.11.2007, 20:24   #5
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

IBQuery обычно используется для выполнения запросов не возвращающих набор данных. Для работы с набором данных используйте IBDataset.
Rik вне форума Ответить с цитированием
Старый 05.11.2007, 20:43   #6
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

Цитата:
Сообщение от Rik Посмотреть сообщение
IBQuery обычно используется для выполнения запросов не возвращающих набор данных. Для работы с набором данных используйте IBDataset.
малышь, где ты такое прочитал?
вот тебе хранимка
Код HTML:
SET TERM ^ ;

CREATE OR ALTER PROCEDURE SEL_CONTR 
returns (
    per_id_contr integer,
    per_fio varchar(100),
    per_adress varchar(255),
    per_telefon varchar(100),
    per_nomer_svid varchar(20),
    per_skidka integer)
as
begin
  for select c.id_contr, c.fio, c.adress, c.telefon, c.nomer_svid, c.skidka
      from contr c
      order by c.fio desc
      into :per_id_contr, :per_fio, :per_adress, :per_telefon, :per_nomer_svid, :per_skidka
      do
  suspend;
end^

SET TERM ; ^

GRANT SELECT ON CONTR TO PROCEDURE SEL_CONTR;

GRANT EXECUTE ON PROCEDURE SEL_CONTR TO SYSDBA;
а вот так можно получить то что даёт нам хранимка
Цитата:
select * from sel_contr
dron-s вне форума Ответить с цитированием
Старый 05.11.2007, 21:21   #7
Rik
Форумчанин
 
Аватар для Rik
 
Регистрация: 28.07.2007
Сообщений: 361
По умолчанию

Цитата:
Сообщение от dron-s Посмотреть сообщение
малышь, где ты такое прочитал?
вот тебе хранимка
Код HTML:
SET TERM ^ ;

CREATE OR ALTER PROCEDURE SEL_CONTR 
returns (
    per_id_contr integer,
    per_fio varchar(100),
    per_adress varchar(255),
    per_telefon varchar(100),
    per_nomer_svid varchar(20),
    per_skidka integer)
as
begin
  for select c.id_contr, c.fio, c.adress, c.telefon, c.nomer_svid, c.skidka
      from contr c
      order by c.fio desc
      into :per_id_contr, :per_fio, :per_adress, :per_telefon, :per_nomer_svid, :per_skidka
      do
  suspend;
end^

SET TERM ; ^

GRANT SELECT ON CONTR TO PROCEDURE SEL_CONTR;

GRANT EXECUTE ON PROCEDURE SEL_CONTR TO SYSDBA;
а вот так можно получить то что даёт нам хранимка
Уважаемый, я вас не оскорблял, у меня свои малыши уже взрослые. прочитай тему с самого начала. Вопрос стоит о том, что человек получил набор данных с помощью IBQuery и хочет его редактировать. Это конечно возможно если подключить UpdateSQL, но зачем? Есть IBDataSet для этих целей.
Пообщайтесь с разработчиками компонент, они вам расскажут что и для чего рекомендуется использовать.
Rik вне форума Ответить с цитированием
Старый 05.11.2007, 21:38   #8
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

Цитата:
я вас не оскорблял, у меня свои малыши уже взрослые. прочитай тему с самого начала
сорри...
просто меня вот это возмутило вообще
Цитата:
IBQuery обычно используется для выполнения запросов не возвращающих набор данных.
извините, но это бред...
Цитата:
Вопрос стоит о том, что человек получил набор данных с помощью IBQuery и хочет его редактировать
что это мешает? невижу проблем...
Цитата:
UPDATE NameTable n set
namefiel = 0
where
n.id=er_id
dron-s вне форума Ответить с цитированием
Старый 05.11.2007, 21:38   #9
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

Цитата:
я вас не оскорблял, у меня свои малыши уже взрослые. прочитай тему с самого начала
сорри...
просто меня вот это возмутило вообще
Цитата:
IBQuery обычно используется для выполнения запросов не возвращающих набор данных.
извините, но это бред...
Цитата:
Вопрос стоит о том, что человек получил набор данных с помощью IBQuery и хочет его редактировать
что это мешает? невижу проблем...
Цитата:
UPDATE NameTable n set
namefield = 0
where
n.id=er_id
dron-s вне форума Ответить с цитированием
Старый 06.11.2007, 09:37   #10
Edimus
Пользователь
 
Регистрация: 30.10.2007
Сообщений: 20
По умолчанию

Эту ошибку исправил... появилась другая!
Project Project1.exe raised exception class EIBInterBaseError with message 'violation of PRIMARY or UNIQUE KEY constraint "INTEG_3" on table "LOG"'. Process stopped. Use Step or Run to continue.

вот код:

procedure TForm2.Button1Click(Sender: TObject);
var f: textfile;
s:string;
i,j:byte;
q,w,n:integer;
a:string;
begin
form1.IBQuery1.Open;
assignfile(f,'C:\Documents and Settings\iadrozdov\Рабочий стол\access.log.0');
reset(f); // откроем файл для чтения
for w:=1 to 2 do begin
//while not eof(f) do begin
readln(f,s); // считаем строку
memo1.Lines.Append(s); // выведем строку в мемо
n:=length(s); // вычислим длину строки
q:=1;
for j:=1 to n do
for i:=1 to n do
begin

if pos(' ',s)=i then begin //если есть пробел то...
a:=copy(s,1,i-1); //скопируем до пробела


if q=1 then begin //form1.IBQuery2.Edit;
form1.IBQuery2.Params.ParamByName(' DT').Value:=a;
form1.IBQuery2.ExecSQL;
// form1.IBQuery2.Post;
end;
if q=2 then begin //form1.IBQuery1.Edit;
form1.IBQuery2.Params.ParamByName(' TC').Value:=strtoint(a);
form1.IBQuery2.ExecSQL;
//form1.IBQuery1.Post;
end;
if q=3 then begin //form1.IBQuery1.edit;
form1.IBQuery2.Params.ParamByName(' ADRK').Value:=a;
form1.IBQuery2.ExecSQL;
//form1.IBQuery1.Post;
end;
if q=4 then begin //form1.IBQuery1.edit;
form1.IBQuery2.Params.ParamByName(' RP').Value:=a;
form1.IBQuery2.ExecSQL;
//form1.IBQuery1.Post;
end;
if q=5 then begin //form1.IBQuery1.edit;
form1.IBQuery2.Params.ParamByName(' RAZM').Value:=strtoint(a);
form1.IBQuery2.ExecSQL;
//form1.IBQuery1.Post;
end;
if q=6 then begin //form1.IBQuery1.edit;
form1.IBQuery2.Params.ParamByName(' SP').Value:=a;
form1.IBQuery2.ExecSQL;
// form1.IBQuery1.Post;
end;
if q=7 then begin// form1.IBQuery1.edit;
form1.IBQuery2.Params.ParamByName(' URL').Value:=a;
form1.IBQuery2.ExecSQL;
//form1.IBQuery1.Post;
end;
if q=8 then begin //form1.IBQuery1.edit;
form1.IBQuery2.Params.ParamByName(' LOGIN').Value:=a;
form1.IBQuery2.ExecSQL;
// form1.IBQuery1.Post;
end;

if q=9 then begin //form1.IBQuery1.edit;
form1.IBQuery2.Params.ParamByName(' TIPR').Value:=a;
form1.IBQuery2.ExecSQL;
//form1.IBQuery1.Post;
end;
q:=q+1;


delete(s,1,i); //удалим то что скопировали
n:=length(s); //вычислим длину строки
while(pos(' ',s)=1)and (length(s)>0) do delete (s,1,1); end;
end;
a:=copy(s,1,i); //скопируем то что осталось

if q=10 then begin //form1.IBQuery1.edit;
form1.IBQuery2.Params.ParamByName(' VIDR').Value:=a;
//form1.IBQuery1.Post; form1.IBQuery1.Append;
end;
try form1.IBQuery1.ExecSQL;
except showmessage('Добавление не получилось!'+#13+'Повторите попытку!');
form1.IBTransaction1.CommitRetainin g; exit; end; form1.IBTransaction1.CommitRetainin g;
end;

closefile(f); // закроем файл


end;
Edimus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
interbase+delphi KiSH333 БД в Delphi 3 15.08.2008 09:53
Си и InterBase Edimus Общие вопросы C/C++ 2 23.11.2007 16:32
Delphi и InterBase -2 Edimus БД в Delphi 5 07.11.2007 14:51
Как из Delphi залезть в системный таблицы InterBase Leee БД в Delphi 0 21.04.2007 21:04
InterBase 6.5 san4es БД в Delphi 0 12.12.2006 20:03