Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2015, 08:45   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
вообще ничего не делает.
Отладку делал? Пошаговку? Трассировку?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.08.2015, 08:56   #12
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

Stilet, прошу посмотреть мой sql запрос. Что в нём не так?
Методом locate будет долго: сначала найти запись,проверить есть ли она в другой таблице и потом только вставить.
Спасибо.
Ernest027 вне форума Ответить с цитированием
Старый 09.08.2015, 09:17   #13
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Визуально в твоем INSERT-е все нормально, разве что в одном месте парочка скобок лишняя. А именно в перечне полей SELECT-а. Коль ошибок не дает, то скорее всего ни одной записи не вставляется, поскольку по условию запроса они уже есть в адресной таблице. Второй вариант - этот участок кода вообще не работает, что такое отладчик наверно запредельное знание
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.08.2015, 11:25   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
прошу посмотреть мой sql запрос
Тебе срочно нужно научиться пользоваться отладчиком. Запрос твой как сказал Аватар вполне пригоден.Сделай так:
1) Исправь ошибки, на который Аватар указал
2) Напиши
Код:
ShowMessage('Записей вставлено: '+IntToStr(ExecSQL));
И посмотри сколько записей будет вставленно.
3) И может быть придется после выполнять Commit()
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.08.2015, 11:39   #15
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

Пишет что вставлено (-1) записей,это как?
Ernest027 вне форума Ответить с цитированием
Старый 09.08.2015, 14:04   #16
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Я спросил в чем мой sql запрос неправильный.
1) Пример http://programmersforum.ru/showthrea...=280900&page=2
2) здесь все наглядно и даже силка на док http://programmersforum.ru/showthread.php?t=281151
Но ты его не смотришь и НЕ хочешь разбирать !
Цитата:
Люди сюда за помощью обращаются.
помощь и работать за тебя это две разные вещи . ! Тебя все помогли . Но , почему то ТЫ это не видишь и НЕ хочешь увидит
Цитата:
То твой код практически от моего ничем не отличается и тоже не работает!!!
Код работает , это у тебя проблемы .! Я не люблю обижать человеку ! Что тебя сказать не знаю .......
xxbesoxx вне форума Ответить с цитированием
Старый 09.08.2015, 16:14   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
вставлено (-1) записей,это как?
Это ошибка. Ты испра... хотя... Не исправил...
Еще раз два момента:
1) Отладку делать умеешь? Трассировку?
2)
Код:
with  DataModule2.ADOQuery3 do
begin
Close;
SQL.Clear;
SQL.Append('insert into Oborudovanie (');
SQL.Append('[Наименование единицы],[Оперативный номер], [Тип оборудования],');
SQL.Append('[Заводской номер], [Технические характеристики], [Год выпуска]) ');
SQL.Append('select [Наименование единицы],[Оперативный номер], [Тип оборудования],');
SQL.Append('[Заводской номер],[Технические характеристики], [Год выпуска]');
SQL.Append('from OborudovanieAdd where not exists (');
SQL.Append(' select * from Oborudovanie');
SQL.Append(' where OborudovanieAdd.[Оперативный номер]=Oborudovanie.[Оперативный номер]');
SQL.Append(' and OborudovanieAdd.[Тип оборудования] =Oborudovanie.[Тип оборудования] ');
SQL.Append(' and OborudovanieAdd.[Заводской номер] =Oborudovanie.[Заводской номер] ) ');

try
 n:=ExecSQL; 
 if n=0 then ShowMessage('Ниче не вставлено') else
 if n>0 then ShowMessage('Вставлено') else
 if n<0 then ShowMessage('Чета ошибка') else
  ; 
except
 on e:Exception do begin
  ShowMessage('Суперошибка: '+e.Message);
 end;
end;

end
Это как минимум. Вставь, выполни. Есля у мну там ошибок синтаксических нет - результат в студию.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.08.2015, 22:47   #18
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

выводит суперошибку и потом много раз что adoquery3 dataset closed.
Может неправильно изначально объяснил,попробую еще раз.
Есть 2 таблицы. На фото обе они показаны. Табл1 (adoquery3) связана с другой таблицей полем ZavodID. Табл2 ни с чем не связана,она только для добавления записей в табл1. Нужно чтобы записи из табл2 в табл1 копировались без повторов (проверка по полю "Оперативный номер"), т.е. если такой Оперативный номер есть, то эту запись не вставлять.
Спасибо.
Изображения
Тип файла: jpg Безымянный.jpg (21.3 Кб, 138 просмотров)
Тип файла: jpg Табл1.jpg (47.5 Кб, 147 просмотров)
Тип файла: jpg Табл2.jpg (40.4 Кб, 141 просмотров)
Ernest027 вне форума Ответить с цитированием
Старый 10.08.2015, 08:32   #19
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
выводит суперошибку
НА-КА-НЕЦ-ТО!!!
Вот теперь прочти внимательно текст ошибки. Как ты думаешь что от означает?
Даю подсказку: Одно из полей не может быть пустым. Смекаешь?
Цитата:
потом много раз что adoquery3 dataset closed.
А ты для вставки не используй компонент, который используешь для отображения. Сделай ADOQuery3100500 для этого.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.08.2015, 11:05   #20
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

Цитата:
Даю подсказку: Одно из полей не может быть пустым. Смекаешь?
у меня это поле ZavodID. во вторую таблицу добавил столбец ZavodID, 2ую таблицу подключил к той же таблице что и первая.
подправил запрос
Код:
with  DataModule2.ADOQuery3 do
begin
Close;
SQL.Clear;
SQL.Append('insert into Oborudovanie (');
SQL.Append('ZavodID,[Наименование единицы],[Оперативный номер], [Тип оборудования],');
SQL.Append('[Заводской номер], [Технические характеристики], [Год выпуска]) ');
SQL.Append('select ZavodID,[Наименование единицы],[Оперативный номер], [Тип оборудования],');
SQL.Append('[Заводской номер],[Технические характеристики], [Год выпуска]');
SQL.Append('from OborudovanieAdd where not exists (');
SQL.Append(' select * from Oborudovanie');
SQL.Append(' where OborudovanieAdd.[Оперативный номер]=Oborudovanie.[Оперативный номер]');
SQL.Append(' and OborudovanieAdd.[Тип оборудования] =Oborudovanie.[Тип оборудования] ');
SQL.Append(' and OborudovanieAdd.[Заводской номер] =Oborudovanie.[Заводской номер] ) ');

try
 n:=ExecSQL;
 if n=0 then ShowMessage('Ниче не вставлено') else
 if n>0 then ShowMessage('Вставлено') else
 if n<0 then ShowMessage('Чета ошибка') else
  ;
except
 on e:Exception do begin
  ShowMessage('Суперошибка: '+e.Message);
 end;
end;
Requery();
Open;
end;
все равно супер ошибка. По идее поле ZavodID должно автоматом заполняться.

Цитата:
А ты для вставки не используй компонент, который используешь для отображения. Сделай ADOQuery3100500 для этого.
т.е. нужно сделать 3 таблицы? в 1ой имеющиеся значения, во 2ой что нужно вставить и если запись таблицы 2 <> записи таблицы 1, то вставить в 3ю, или вообще не то?
Ernest027 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обратиться к USB на С# Кандибобр C# (си шарп) 6 09.10.2014 16:30
как обратиться к браузеру? gazellea Помощь студентам 0 26.06.2012 20:26
как в Delphi присвоить полю DBEdit целочисленное значение поля из DBText (как правильно )? ГОСЕАН Помощь студентам 0 10.01.2012 06:12
Как обратиться к ячейке? baddog БД в Delphi 2 30.04.2010 15:43
Как отсортировать НД по Lookup-полю? Schumacher БД в Delphi 4 21.06.2007 14:07