![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Неработает ADOTable.InsertRecord( [.....]); [D6, MSSQL]
PONTIY © (2003-01-21 13:23:00)Вставляю новую запись в пустую таблицу приведенным в теме методом, компилятор сильно ругается будто я пытаюсь добавить NULL в поле которое этого не позволяет (на самом деле это не так). А вот если в эту же таблицу первую запись добавить ручками, то этот же метод благополучно отрабатывает как положено вставляя в таблицу последующие записи. Я что-то не так делаю?
PONTIY (2003-01-22 14:25:00) [1]угу, вроде бы разобрался. спасибо
sniknik (2003-01-22 12:56:00) [2]обшибся, опс. путаницу ввел сорри. ну посмотрел есть различия?
PONTIY (2003-01-22 12:29:00) [3]to sniknik
prOfiler оно зовется
PONTIY (2003-01-22 12:27:00) [4]to BlackTiger
>Ну нормально, я всегда пользуюсь - и нормально. Что-то у Вас, батенька, в коде.
а Вы это делаете с пустой таблицей или нет? (см. начало темы)
sniknik (2003-01-22 12:25:00) [5]это примочка от MSSQL
PONTIY (2003-01-22 12:22:00) [6]to sniknik
а где он есть этот Prifiler, что-то не вижу среди делфы?
BlackTiger (2003-01-22 11:01:00) [7]исключение возбуждается при выполнении строки ADOTable1.Insert;
Ну нормально, я всегда пользуюсь - и нормально. Что-то у Вас, батенька, в коде.
А ОШИБКУ-ТО ХОТЬ КАКУЮ ВЫДАЕТ? Текст! Конкретно! Начнем с этого.
sniknik (2003-01-22 08:27:00) [8]то что?
нечего о нем расказывать, запустил открыл new->trace, все, смотриш какими командами идет общение.
тут то у некоторых глаза и открываются, что на самом деле ADOTable это не то что в BDE таблица, а все переводится в команды SQL, по другому и не может он же SQLсервер.
вот тут и смотри чем первый Insert от последующих отличается, может команда кривая может дополнительно что посылается. короче сравнивай.
(в итоге после недельки работы с Prifiler-ом 98% за то что перейдеш на чистый SQL :-)))
PONTIY (2003-01-22 06:16:00) [9]sniknik © (21.01.03 15:27)
>а насчет Prifiler-а ? посмотреть результирующий запрос от TADOTable?.
Если ты мне поподробней расскажешь про Prifiler
PONTIY (2003-01-22 06:15:00) [10]
Если бы ты посмотрел на описание InsertRecord, то заметил бы, что он принимает массив из TVarRec. А как с этой байдой общаться - фиг его знает.
Либо делай, как сказали, либо
ADOTable1.Insert;
for i := 0 to ADOTable1.FieldCount - 1 do
ADOTABLE.Field[i].AsString = MyValues[i]
ADOTable.Post;
"Либо" не пройдет, исключение возбуждается при выполнении строкиADOTable1.Insert;
BlackTiger (2003-01-21 21:05:00) [11]Если бы ты посмотрел на описание InsertRecord, то заметил бы, что он принимает массив из TVarRec. А как с этой байдой общаться - фиг его знает.
Либо делай, как сказали, либо
ADOTable1.Insert;
for i := 0 to ADOTable1.FieldCount - 1 do
ADOTABLE.Field[i].AsString = MyValues[i]
ADOTable.Post;
sniknik (2003-01-21 15:27:00) [12]а насчет Prifiler-а ? посмотреть результирующий запрос от TADOTable?.
PONTIY © (21.01.03 14:51)
> Но я хотел бы обойтись TADOTable
я бы наоборот советовал при работе с SQL сервером обходитсябезTADOTable и даже без TADOQuery, а обходится TADODataSet и TADOCommand ну и (куда без него) TADOConnection. Но конечно как желаете.
PONTIY (2003-01-21 15:07:00) [13]Не компилятор конечно, просто к слову пришлось, так как это все происходит в режиме компиляции.
Anatoly Podgoretsky (2003-01-21 14:55:00) [14]Признайся, насчет компилятора, ты конечно приврал, так как иначе невозможно было бы останое.
PONTIY (2003-01-21 14:51:00) [15]Если писать SQL запросы, то конечно же работает. Но я хотел бы обойтись TADOTable
PONTIY (2003-01-21 14:13:00) [16]to Johnmen
код простой:
ADOTable2.InsertRecord(["Value1", "Value2", "Value3", ...]);
sniknik (2003-01-21 14:00:00) [17]1 проверил код? работает?
2 запусти Prifiler и посмотри какой командой первая запись из ADOTable.InsertRecord вставляется.
3 сравни.
Johnmen (2003-01-21 13:55:00) [18]Так будут подробности (код) или нет ?
PONTIY (2003-01-21 13:51:00) [19]Я же про один метод пишу: InsertRecord. Bменно он у меня невставляет как положено запись в пустую таблицу, но замечательно это делает на таблице в которой есть хотя бы одна запись.
sniknik (2003-01-21 13:50:00) [20]сорри недоглядел скобки, надо так
ADOCommand.CommandText:=
"CREATE TABLE TableTest (Field1 CHAR(20)) "+
"INSERT INTO TableTest (Field1) VALUES (""First field"")";
ADOCommand.Execute;
""<>"