| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > добавление записей через AdoQuery |
| Автор: neweraser 1.12.2009, 01:22 | ||||||||
Всем привет
добавляю много строк и выдается такая ошибка
пробовал так
добавляет но криво и в середине вываливается ошибка и даже после каждой DataModule1.ADOQuery.SQL.Clear; (после цикла) добавлял DataModule1.ADOQuery.First; в сети ничего кроме
больше ничего не нашел, может есть какой-то еще вариант решения проблемы? не хочется ADOTable использовать, и так на форме куча компонентов |
| Автор: Данкинг 1.12.2009, 01:42 | ||
Почему криво, какая ошибка? Вообще перед каждым .Clear делай .Close
Добавлено через 41 секунду Это явно ни при чём. |
| Автор: Teleport 1.12.2009, 03:07 | ||||
В тексте SQL-запроса в конце перед самой ' нужно ставить ;
Видишь - у меня ; перед ' Немного не по теме - ты всегда пишешь на каждой строке DataModule1.ADOQuery? with - вообще не пользуешься? Это я на всякий случай. 3-4 строчки еще без него, а более - уже с ним, как-то удобнее. |
| Автор: neweraser 1.12.2009, 10:10 | ||
он с ObjguardList2 добавляет как нужно, потом добавляет запись в 3-4 строку (в зависимости от ObjguardList2.Count), хотя мне надо в 1-ю строку в поле 'GenDir', а потом ошибка (какая не помню (я не дома)
пользовался, но потом посчитал это некрасивым я пробовал, все равно та же ошибка :(( |
| Автор: Frees 1.12.2009, 10:19 |
| может поле Datamodule1.RequisTable.FieldByName('FullName').AsString или другие поля имеют значение null? asstring тогда вернет пустоту и запрос у тебя криво соберется |
| Автор: neweraser 1.12.2009, 18:56 | ||
может да, я не знаю к какой строке он конкретно обращается, мне нужна первая, хотя больше их там и не должно быть, в той таблице всегда одна строка как это? |
| Автор: Данкинг 1.12.2009, 18:58 | ||
При наличии ключевого (к примеру) поля:
В данном случае в pole1 будет занесено значение "3" для тех записей, у которых поле id имеет значение 3. |
| Автор: Teleport 1.12.2009, 19:18 |
| 2 neweraser - главное определиться - тебе нужно ИЗМЕНИТЬ (ОБНОВИТЬ) значения в существующей записи (строке) или же ДОБАВИТЬ НОВУЮ запись (строку) в таблицу. |
| Автор: neweraser 1.12.2009, 19:29 | ||
| все равно не доходит до меня :( ipicture не грузится, поэтому так присоеденил на всякий случай. в поле EmplName у меня добавляется несколько записей в остальные по одной записи из лругой таблицы изначально код выглядел вот так
|
| Автор: neweraser 1.12.2009, 19:31 |
| Teleport, я добавляю новые записи в только что созданную таблицу |
| Автор: Данкинг 1.12.2009, 19:34 |
| neweraser, хочешь сказать, этот код заполняет первую строку таблицы? |
| Автор: neweraser 1.12.2009, 19:44 |
| нееет, он должен заполнять только ЕмплНаме, допустим 4 поля сверху, остальные 3 поля только на первой строке, а остальные поля потом будут заполняться Добавлено через 1 минуту и 25 секунд |
| Автор: Данкинг 1.12.2009, 20:05 | ||||
Вот для этого каждая строка и должна иметь уникальный номер (например, ID). Вначале заполняем 4 строки ЕмплНаме с помощью insert, а потом уже - 3 столбца первой строки с помощью update... where ID=1...
Это не вирус, это ПунтоСвитчер. |
| Автор: neweraser 1.12.2009, 20:29 |
| а можно без ид? например where ('поле GenDir - первая строка') пс это не пунто свичер, а что-то с форумом или моей оперой Добавлено через 1 минуту и 40 секунд т.к. в блокноте нормально все )) скопировал - вставил в окошко сообщения - вроде нормально |
| Автор: Данкинг 1.12.2009, 21:09 |
Можно, если ты уверен, что Иван Иванович Иванов у тебя во всей базе один-единственный. Ну, не знаю, обычно такое с ПунтоСвитчером бывает как раз бывает. А так - видимо, глюк очередной. |
| Автор: neweraser 1.12.2009, 21:23 |
| чуть не так сформулировал, это пустое поле, можно просто как-то явно указать на него? |
| Автор: Данкинг 1.12.2009, 21:43 |
...where pole1 is null (вроде в Access так) - обновляются записи с пустыми полями pole1. |
| Автор: neweraser 1.12.2009, 22:43 |
| ну так они все обновляются Спасибо |
| Автор: Данкинг 1.12.2009, 23:25 |
| neweraser, не знаю-не знаю, должны только по условию WHERE..., разбирайся, где накосячилзаблуждаешься. |
| Автор: neweraser 2.12.2009, 00:30 |
| AdoQuery же вроде работает почти как и AdoTable, можно его соединить с какой-нибудь таблицей? например как-то так DataSource1.DataSet:= table1 (до этого в AdoQuery в свойствах выбрал DataSource1) а потом работать как и с AdoTable, т.е. ADOQuery.FieldByName('pole'):= 'значение'; или я опять туплю и этого делать не стоит? |
| Автор: Данкинг 2.12.2009, 00:58 | ||
Если просто в нём выбираешь все записи (select * from TABLE), то... Вроде как можно, только не помню, делал ли я так когда-то. В общем, попробуй, должно получиться:
Добавлено @ 01:00 А это зачем? Указываешь для AdoQuery соответствующее AdoConnection - и всё, безо всяких датасоурсов. |
| Автор: neweraser 2.12.2009, 01:23 |
| только вместо AdoQuery.Append мне нужно было AdoQuery.Edit спасибо еще раз! выручил!! |
| Автор: Данкинг 2.12.2009, 01:39 | ||
В таком случае (т.е. для редактирования) не забудь сначала встать на нужную строку, к примеру:
|