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

Вниз

Помогите решить проблемму table read only   Найти похожие ветки 

 
slaviq   (2004-09-20 14:42) [0]

кьери ругается что таблица в режиме только чтения но запись добавляет, вопщем настройки:
Database(DATABASE NAME=art_item
USER NAME=admin
OPEN MODE=READ/WRITE
PASSWORD=asdasdas
)алиас настроен через ОДБС в винде и прекрасно работает (с ним точно проблемм нет)
у кьери стоит реквестлив=тру
кьери запрос заполняется немного рагульно - но в СКЛ Менеджере работает:
  Close;
  SQL.Clear;
  SQL.Add("INSERT INTO art");
  SQL.Add("(ID, Name, Artik, Groupe, Col, Sc, color, mat, line)");
  SQL.Add("SELECT MAX(ART.ID) + 1, :Name, :Art, GROUPE.ShortName, :Col , 0,");
  SQL.Add("-1, COLORS.ID, LINES.ID");
  SQL.Add("FROM ART, GROUPE, COLORS, LINES");
  SQL.Add("WHERE GROUPE.LongName = :Groupe AND");
  SQL.Add("    Colors.Color = :Color AND LINES.Name = :Line");
  SQL.Add("GROUP BY Groupe.ShortName, colors.ID, LINES.ID");

  Parambyname("Name").AsString:=Form1.NamB.Text;
  Parambyname("Art").AsString:=Art;
  Parambyname("Groupe").AsString:=Grup;
  Parambyname("Col").AsString:=Form1.ColB.Text;
//   Parambyname("podgrupa").AsString:=Podgr;
  Parambyname("Color").AsString:=Color;
  Parambyname("Line").AsString:=Line;
  ExecSQL;

Через трай делать без ексепта - гониво - а вдруг реальная ашиПка будет - лучше уж ее ловить ....
Кстати еще одна особенность - если у кьери поставить реквест лив тру и открывать в одном датбейсе по порядку несколько таблиц - то первая открывается (ну там например открыл чтото заполнил, закрыл) то если открывать вторую табличку - начинает ругаться про неправильнось составления запросика :(
Помогите плиз. Может стоит чтото поменять в СКЛ запросе - через там процедуры и все такое, только я в этом не силен :(
Буду рад любым пропозициям! Зарание 10х!


 
Ega23 ©   (2004-09-20 15:13) [1]

Вообще-то я бы сделал через ХП:

exec sp_ArtInsert @Nam=:Name, @Art=:Art, @GroupeLongName=:Groupe, ...

А в процедуре уже делал сначала все предварительные селекты, потом инсерт, ну и результат клиенту неплохо передать, чтобы спозиционироваться на него.

Да, кстати, более правильно будет SELECT MAX(IsNull(ART.ID,0)) + 1


 
slaviq   (2004-09-20 15:36) [2]

кстати, а результат как передать????
процедуркой щас займусь .... 10Х!


 
Ega23 ©   (2004-09-20 15:48) [3]

Ну, типа того:

if exists (select * from sysobjects where id = object_id(N"[s_ArtEdit]") and OBJECTPROPERTY(id, N"IsProcedure") = 1)
drop procedure [s_ArtEdit]
GO

CREATE PROCEDURE s_ArtEdit
@mode int=1, -- 1- Add, 2- Edit, 3-Delete
@ArtID int=0,
@Name varchar(...),
@Art ...
@Grope
@Col
@Color
@Line

As
declare
@result int


Set Nocount On

if @mode=1
begin
 Select @result= MAX(IsNull(ART.ID,0)) + 1
 Insert into .....

end

if @mode=2
begin
 Updete Arts set ....   where ArtID=@ArtID

end

if @mode=3
begin
 Delete Arts where @ArtID=@ArtID
end

return(@result)

go


Вызов на добавление с клиента:


Declare @X int Set NoCount On
exec @X=s_ArtEdit @Mode=1, @Name=:Name, @Art=:Art, @GroupeLongName=:Groupe, ...
Set NoCount OFF
Select X=@X";


Эту строку отписываешь в Query1.Sql.Text, потом


try
Query1.Open;
Result:=Query1.FieldByName("X").AsInteger;


Вот в таком вот ключе.
Дерзай!


 
slaviq   (2004-09-20 16:01) [4]

ууууууу.......
СПАСИБКИ!!!!!!!!! ВАПЩЕ БЛИН СУПЕР!!!! :)



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

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

Наверх




Память: 0.48 MB
Время: 0.041 c
1-1096568026
Dot
2004-09-30 22:13
2004.10.17
Применение настроек


14-1096293897
peypivo
2004-09-27 18:04
2004.10.17
:-)


14-1096546298
Zlod3y
2004-09-30 16:11
2004.10.17
Скачать последнюю версию BDE


4-1095420430
Black CAT
2004-09-17 15:27
2004.10.17
И опять про CAD


4-1095438982
veteran
2004-09-17 20:36
2004.10.17
Плохое качество картинки с TV-тюнера