-
Извините за ламерский вопрос. Чувствую, что дело в пропертях AdoDataSet'a. Делаю так:
AdoDataSet.Append;
AdoDataSet.Post;
id:=AdoDataSet.FieldByName('id').AsString;
но в Id передаются нули, хотя в самой таблице БД GUID сформировался нормальный, что я делаю не так? Поле типа uniqueidentifier, значение или привязка по умолчанию (newid()) Спасибо!
-
хотя в самой таблице БД GUID сформировался нормальный
сама таблица там и гуид, а сам датасет здесь.
-
Так как тогда получить ГУИД вновь введенной записи?
-
пере запрос данных по записи, или всех по таблице, или генерить гуид на клиенте, пусть по умолчанию умолчанием и остается, а в нормальном варианте значение задавать....
-
> что дело в пропертях AdoDataSet'a. кстати да, можно заставить обновляться и в пропертями... тем есть указание/можно выставить, на пере запрос. но только не "галочкой" а прописыванием свойств рантайм... проще (и оно же менее "загрузочно") значение задавать.
-
> пере запрос данных по записи, или всех по таблице,
т.е. так?
AdoDataSet.Close;
AdoDataSet.Open;
Locate(...)
А вот это не понял...
> или генерить гуид на клиенте, пусть по умолчанию умолчанием
> и остается, а в нормальном варианте значение задавать...
> .
-
> т.е. так? в самом самом плохом, ресурсоемком варианте... да, так. > А вот это не понял...
...
AdoDataSet.FieldByName('id').AsGuid:= Guid;
AdoDataSet.Post; что непонятного?
-
> Так как тогда получить ГУИД вновь введенной записи?
ADODataSet1.CommandText := '
declare @X uniqueidenifier;
set @x=newid();
insert into ttt(uid, some_value) values (@x, '''bla-bla-bla''');
select result=@x;';
ADODataSet1.Open;
Result := ADODataSet1.Fields[0].As (вот тут не помню, вроде к них GUID есть, или через строку приводить?) Как-то так.
|