Форум: "Базы";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
ВнизПомогите решить проблемму 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.042 c