Конференция "Базы" » пустой GUID [D7, MSSQL]
 
  • Quart (08.08.11 14:31) [0]
    Извините за ламерский вопрос. Чувствую, что дело в пропертях AdoDataSet'a.
    Делаю так:

    AdoDataSet.Append;
    AdoDataSet.Post;
    id:=AdoDataSet.FieldByName('id').AsString;



    но в Id передаются нули, хотя в самой таблице БД GUID сформировался нормальный, что я делаю не так?
    Поле типа uniqueidentifier, значение или привязка по умолчанию (newid())
    Спасибо!
  • Медвежонок Пятачок © (08.08.11 14:59) [1]
    хотя в самой таблице БД GUID сформировался нормальный

    сама таблица там и гуид, а сам датасет здесь.
  • Quart (08.08.11 15:01) [2]
    Так как тогда получить ГУИД вновь введенной записи?
  • sniknik © (08.08.11 15:23) [3]
    пере запрос данных по записи,
    или всех по таблице,
    или генерить гуид на клиенте, пусть по умолчанию умолчанием и остается, а в нормальном варианте значение задавать....
  • sniknik © (08.08.11 15:27) [4]
    > что дело в пропертях AdoDataSet'a.
    кстати да, можно заставить обновляться и в пропертями... тем есть указание/можно выставить, на пере запрос. но только не "галочкой" а прописыванием свойств рантайм... проще (и оно же менее "загрузочно") значение задавать.
  • Quart (08.08.11 15:34) [5]

    > пере запрос данных по записи, или всех по таблице,

    т.е. так?

    AdoDataSet.Close;
    AdoDataSet.Open;
    Locate(...)

    А вот это не понял...
    > или генерить гуид на клиенте, пусть по умолчанию умолчанием
    > и остается, а в нормальном варианте значение задавать...
    > .



  • sniknik © (08.08.11 15:50) [6]
    > т.е. так?
    в самом самом плохом, ресурсоемком варианте... да, так.

    > А вот это не понял...

    ...
    AdoDataSet.FieldByName('id').AsGuid:= Guid;
    AdoDataSet.Post;


    что непонятного?
  • Ega23 © (09.08.11 01:08) [7]

    > Так как тогда получить ГУИД вновь введенной записи?


    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 есть, или через строку приводить?)



    Как-то так.
 
Конференция "Базы" » пустой GUID [D7, MSSQL]
Есть новые Нет новых   [134431   +10][b:0][p:0.001]