Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.04.24;
Скачать: [xml.tar.bz2];

Вниз

Работа с ADO под SQL Server 2000   Найти похожие ветки 

 
AlexGof   (2003-04-08 10:43) [0]

Проблема такая. Отключаю Identity в таблице вот так: ADOCommand.CommandText:="SET IDENTITY_INSERT "+nbase+" ON";
ADOCommand.Execute;
Затем в ADODataset в колонку с Identity пытаюсь вставить значение из другой таблицы, но вылезает ошибка "колонка не может быть редактирована". Использовать ADODataSet для вставки записи приходиться потому, что перегоняю данные из InterBase базы в MS SQL Server, базы полностью идентичны. Т. е. я по имени поля из таблицы InterBase нахожу такому же имени поля в такой же таблице MS SQL и присваиваю ему значение. Может можно и по другому как то сделать или Identity в ADODataSet настроить ? Подскажите кто знает. Заранее благодарен.


 
stone   (2003-04-08 10:47) [1]

Возможно проблема неявном старте транзакции


 
sniknik   (2003-04-08 11:18) [2]

надо инсертами вставлять, готовить на каждую запись команду INSERT INTO (или через временную таблицу чтобы одним обойтись).


 
ЮЮ   (2003-04-08 11:30) [3]

Насколько знаю аглицкий, ON всегда было ВКЛЮЧИТЬ, а выключить - OFF. Is not it?


 
AlexGof   (2003-04-08 11:37) [4]

Да инсертом вставится конечно, но у меня есть две одинаковые таблицы Interbase и MS SQL и записи я перегоняю из них следующим образом :
1. Передаю имя таблицы в набор DataSet=d Interbase и ADODataSet=q и открываю селектом их
потом
d.First;
if not t.InTransaction then t.BeginTrans
else t.CommitTrans;
while not d.Eof do
begin
q.Edit;
q.Append;
for i:=0 to d.FieldCount-1 do
begin
name:= d.Fields[i].FieldName;
q.FieldByName(name).Value:= d.Fields[i].Value;
end;
q.Post;
d.Next;
end;
t.CommitTrans;
а как я смогу использовать инсерт если мне заранее не известен в этом цикле тип поля ?
Insert into nbase(d.Fields[i].FieldName) values(а какого типа сюда я вставлю величину, как это описать ?)
или ты знаешь как это по другому можно реализовать ?


 
stone   (2003-04-08 11:52) [5]


> а какого типа сюда я вставлю величину, как это описать ?)

d.Fields[i].DataType


 
AlexGof   (2003-04-08 12:11) [6]

я еще раз извиняюсь, но не могу понять как это сделать
Insert into nbase(d.Fields[i].FieldName) values(
ADOCommand.CommandText:="Insert into nbase("+d.Field[i].FieldName+") values("+d.Field[i].Value+") ?
тип то поля неизвестен если Data то "25.05.03", строковый так вставляется тоже в кавычках, а если int ? как в раздел инсерта Values вставить величину поля ? Как выполнить преобразование типов ? Ведь просто "+d.Field[i].Value+" нельзя написать, тип ведь каждый раз разный !


 
sniknik   (2003-04-08 12:32) [7]

лутше так, перед циклом
ADOCommand.CommandText:="Insert into nbase(["+d.Field[i].FieldName+"],"+...") values("+":Par"+IntToStr(i)+","+....")
а после только подставлять параметры
for i ...
ADOCommand.Parameters.[i].DataType:= := d.Fields[i].DataType;
ADOCommand.Parameters[i].Value:= d.Fields[i].Value
....


 
AlexGof   (2003-04-08 12:57) [8]

sniknik большое спасибо !!!



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

Форум: "Базы";
Текущий архив: 2003.04.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.012 c
11-76865
Kirill
2002-07-12 19:11
2003.04.24
ошибка с фонтом


3-76787
Iii
2003-04-04 18:37
2003.04.24
Восстановление удаленной записи


1-76888
snake1977
2003-04-14 16:52
2003.04.24
ShareWare


1-77007
Mop
2003-04-14 04:04
2003.04.24
TTreeView - правая кнопка


14-77078
Andrey Filatow
2003-04-06 20:49
2003.04.24
update Delphi 7





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский