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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2018, 14:31   #11
Adminisrator
Пользователь
 
Регистрация: 19.07.2018
Сообщений: 12
По умолчанию

я чисто для упрощения поиска проблемы присваиваю текст:
Цитата:
AdoQueryMySql.Parameters.ParamByNam e(':ArtikelID').Value :='1';
На самом деле вместо '1' присваиваются значения
Код:
ADOQueryMSSQL.FieldByName('ArtikelID').value

чтобы было так:

Цитата:
AdoQueryMySql.Parameters.ParamByNam e(':ArtikelID').Value :=ADOQueryMSSQL.FieldByName('Artike lID').value;

Последний раз редактировалось Adminisrator; 23.07.2018 в 14:34.
Adminisrator вне форума Ответить с цитированием
Старый 23.07.2018, 14:32   #12
Adminisrator
Пользователь
 
Регистрация: 19.07.2018
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Adminisrator Посмотреть сообщение
Не пойму в чём проблема. С отладкой тоже не пойму...
Так как быть?
Adminisrator вне форума Ответить с цитированием
Старый 23.07.2018, 14:42   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Adminisrator Посмотреть сообщение
Цитата:
Строковые значения в параметры для них зачем?
Не совсем понял вопрос.
Код:
 AdoQueryMySql.Parameters.ParamByName(':ArtikelID').Value       :=1;
...
  AdoQueryMySql.Parameters.ParamByName(':Quantity').Value        := 9;
но это так, мелочи.

проблема ВОТ:

Цитата:
Код:
             AdoQueryMySQL.SQL.Clear;
             AdoQueryMySQL.SQL.Add('INSERT INTO '+ db +'.'+ dbtable +'(`ArtikelID`, `ManufacturerName`,             ');
             AdoQueryMySQL.SQL.Add('`ManufacturerPN`, `Supplier`, `SupplierPN`, `Description`, `PhotoURL`,           ');
             AdoQueryMySQL.SQL.Add('`Price`, `Quantity`, `Currency`, `Lagerplatz`)                                   ');
             AdoQueryMySQL.SQL.Add(' VALUES (:ArtikelID, :ManufacturerName, :ManufacturerPN, :Supplier, :SupplierPN, ');
             AdoQueryMySQL.SQL.Add(' :Description, :PhotoURL, :Price, :Quantity, :Currency, :Lagerplatz)             ');
             AdoQueryMySql.Open;

p.s. скажите честно, а Вы понимаете смысл этих всех Refresh, Open, Close, ExecSQL ? для чего они нужны и как их использовать?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.07.2018, 14:49   #14
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Вместо типа variant для числового поля конкретный тип присваивать в параметр или числовую константу, а не символьную:
Код:
AdoQueryMySql.Parameters.ParamByName(':ArtikelID').Value:=ADOQueryMSSQL.FieldByName('ArtikelID').Value;
AdoQueryMySql.Parameters.ParamByName(':ArtikelID').Value:=ADOQueryMSSQL.FieldByName('ArtikelID').AsInteger;
или так, если в лоб
AdoQueryMySql.Parameters.ParamByName(':ArtikelID').Value:='1';
AdoQueryMySql.Parameters.ParamByName(':ArtikelID').Value:=1;
В строковое поле:
Код:
AdoQueryMySql.Parameters.ParamByName(':ManufacturerName').Value:=ADOQueryMSSQL.FieldByName('ManufacturerName').value;
AdoQueryMySql.Parameters.ParamByName(':ManufacturerName').Value:=ADOQueryMSSQL.FieldByName('ManufacturerName').AsString;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.07.2018, 14:58   #15
Adminisrator
Пользователь
 
Регистрация: 19.07.2018
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
AdoQueryMySql.Open;
Упустил из виду. Теперь удалил.

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Вы понимаете смысл этих всех Refresh, Open, Close, ExecSQL ?
понимаю

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
для чего они нужны
понимаю

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
как их использовать?
думаю, что понимаю


Теперь вылазит:
Цитата:
AdoQueryMySql: Parameter 'ArtikelID' not found.

Я так понимаю,
Код:
AdoQueryMySql.Parameters.ParamByName(':ArtikelID').Value
что тут в запрос MySQL для поля ArtikelID я передаю значение Value.
Adminisrator вне форума Ответить с цитированием
Старый 23.07.2018, 15:02   #16
Adminisrator
Пользователь
 
Регистрация: 19.07.2018
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Вместо типа variant для числового поля конкретный тип присваивать в параметр или числовую константу, а не символьную
Я пробовал ранее работать с Variant, но у меня было очень много ошибок с которыми я тупо не справился убив много времени.

Тогда давайте посмотрим на оригинал:
Код:
AdoQueryMySql.Parameters.ParamByName(':ArtikelID').Value       :=ADOQueryMSSQL.FieldByName('ArtikelID').value;

Тут для AdoQueryMySql присваивается ADOQueryMSSQL.

Последний раз редактировалось Adminisrator; 23.07.2018 в 15:08.
Adminisrator вне форума Ответить с цитированием
Старый 23.07.2018, 15:08   #17
Adminisrator
Пользователь
 
Регистрация: 19.07.2018
Сообщений: 12
По умолчанию

Поменял
Код:
AdoQueryMySql.Parameters.ParamByName(':ArtikelID').Value       :=ADOQueryMSSQL.FieldByName('ArtikelID').AsString;
Проблема осталась:
Цитата:
AdoQueryMySql: Parameter 'ArtikelID' not found.
Adminisrator вне форума Ответить с цитированием
Старый 23.07.2018, 15:09   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Adminisrator Посмотреть сообщение
Теперь вылазит:
AdoQueryMySql: Parameter 'ArtikelID' not found.
двоеточие надо убрать:
Код:
                       AdoQueryMySql.Parameters.ParamByName('ArtikelID').Value       :=
                       AdoQueryMySql.Parameters.ParamByName('ManufacturerName').Value:=
                       AdoQueryMySql.Parameters.ParamByName('ManufacturerPN').Value  :=
                       AdoQueryMySql.Parameters.ParamByName('Supplier').Value        :=
                       AdoQueryMySql.Parameters.ParamByName('SupplierPN').Value      :=
                       AdoQueryMySql.Parameters.ParamByName('Description').Value     :=
                       AdoQueryMySql.Parameters.ParamByName('PhotoURL').Value        :=
                       AdoQueryMySql.Parameters.ParamByName('Price').Value           :=
                       AdoQueryMySql.Parameters.ParamByName('Quantity').Value        :=
                       AdoQueryMySql.Parameters.ParamByName('Currency').Value        :=
                       AdoQueryMySql.Parameters.ParamByName('Lagerplatz').Value      :=
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.07.2018, 15:15   #19
Adminisrator
Пользователь
 
Регистрация: 19.07.2018
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
двоеточие надо убрать
Точно!
Протупил...
Adminisrator вне форума Ответить с цитированием
Старый 23.07.2018, 15:16   #20
Adminisrator
Пользователь
 
Регистрация: 19.07.2018
Сообщений: 12
По умолчанию

Заработало!

Ребята ВЫ - СУПЕР!

Спасибо!
Adminisrator вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
слишком много аргументов в вызове функции или как создать много файлов на рабочем столе ON Mikhail Общие вопросы C/C++ 1 07.03.2018 21:02
Много раз дублирует вывод данных TurboDiesel Microsoft Office Access 6 12.11.2014 15:57
Одна команды-много данных на mmx y0rker Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 25.06.2012 16:48
Почему так много структур данных? ilia.sk8 Помощь студентам 1 28.01.2011 19:03