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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 09.06.2014, 03:00   #1
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию MySQL Delphi MyDAC вызов хранимой процедур

Здравствуйте ребята. Пришлось работать MySQL через MyDAC проблема в том что не магу вызов процедур и передать его параметр ! Вот смотрите

1. Создаю таблица
Код:
create table tab222
(
 id int not null auto_increment,
 dat date, 
 naimenovan nvarchar(50),
primary key(id)
);
2. процедур на INSERT
Код:
DELIMITER $$
create procedure Tab22Inserted
(
 in pdat date, 
 in pnaimenovan nvarchar(50)
)
begin
  insert into tab222(dat, naimenovan)
  values (pdat, pnaimenovan);
commit;
end
$$
3. вызов процедур делаю через MyStoredProc1
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
 with  MyStoredProc1 do
   begin
    Params.Clear;
    StoredProcName := 'Tab22Inserted';
    PrepareSQL;
    ParamByName('pdat').Value := DateTimePicker1.Date;
    ParamByName('pnaimenovan').Value := Edit1.Text;
    ExecSQL;
    MyQuery1.Close;
    MyQuery1.SQL.Text := 'select * from tab222';
    MyQuery1.Open;
   end;
end;
Выводить ошибка ! Пожалуйста ребята скажите что я делаю неправильно ?
Изображения
Тип файла: jpg MyDAC_Proc.jpg (59.0 Кб, 154 просмотров)
xxbesoxx вне форума
Старый 09.06.2014, 03:08   #2
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Так тоже не работает . Что ему не нравится ?
Код:
    MyStoredProc1.Params.Clear;
    MyStoredProc1.StoredProcName := 'Tab22Inserted';
    MyStoredProc1.Prepare;
    MyStoredProc1.ParamByName('pdat').AsDateTime := DateTimePicker1.Date;
    MyStoredProc1.ParamByName('pnaimenovan').AsString := Edit1.Text;
    MyStoredProc1.ExecSQL;
    MyQuery1.Close;
    MyQuery1.SQL.Text := 'select * from tab222';
    MyQuery1.Open;
xxbesoxx вне форума
Старый 09.06.2014, 09:38   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Кодировка ему не нравится. То что в Edit1 вписано. Перекодировать видимо придется с помошью TEncoding. Выясни только какая кодировка в базе установлена.
I'm learning to live...
Stilet вне форума
Старый 09.06.2014, 10:03   #4
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Stilet спасибо что уделили мне время . Если я правильно помня кодировка надо посмотреть в БД и потом такой кодировка установить на MyConnection1 вот смотрите что не так ?

из MySQL Workbench вызываю и передаю параметр так. Все работает и Русский отображает нормально кодировка utf-8 но я думаю что из Delphi я допускаю ошибка
Код:
call Tab22Inserted(sysdate(), 'Чай')
Изображения
Тип файла: png KodSQL.png (8.6 Кб, 51 просмотров)
Тип файла: png KodDelphi.png (22.8 Кб, 111 просмотров)

Последний раз редактировалось Stilet; 09.06.2014 в 11:03.
xxbesoxx вне форума
Старый 09.06.2014, 10:34   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

угу. согласен с тем, что проблема с кодировкой!

боюсь попасть пальцем в небо, но рискну предположить, что
nvarchar ожидает на входе Unicode строку, а приходит Edit1.Text - ansistring (у Вас же Delphii версии менее 2009)...

1) что происходит, если в Edit1 записать ИСКЛЮЧИТЕЛЬНО латиницу? Есть ли ошибка и если есть, какая?

2) попробуйте заменить параметер функции на varchar:
Код:
DELIMITER $$
create procedure Tab22Inserted
(
 in pdat date, 
 in pnaimenovan varchar(50)
)
...

p.s. я с этим не сталкивался, пишу свои предположения, поэтому могу и фигню предлагать. учитывайте это, пожалуйста!
Serge_Bliznykov вне форума
Старый 09.06.2014, 10:44   #6
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Stilet и Serge_Bliznykov Огромное спасибо. Да это било кодировка MyConnection1 установил кодировка cp1251 и уже из Edit записывает Русский . Но осталось вопрос Пускай будет БД на utf-8 и из Delphi cp1251 или как вы посоветовали ?
Код:
in pnaimenovan varchar(50)
У меня DelphiXE3 и MyDAC 7.6.11
Изображения
Тип файла: jpg KodDelphiCP1251.jpg (90.2 Кб, 64 просмотров)
xxbesoxx вне форума
Старый 09.06.2014, 10:45   #7
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

У меня Delphi XE3 и MyDAC 7.6.11
xxbesoxx вне форума
Старый 09.06.2014, 11:08   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Пускай будет БД на utf-8 и из Delphi cp1251 или как вы посоветовали ?
Оно сейчас работает? Данные заносятся правильно? Считываются правильно - значит оставь как есть.
I'm learning to live...
Stilet вне форума
Старый 09.06.2014, 11:20   #9
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Да работает это просто удивительно
Изображения
Тип файла: jpg Kod333.jpg (34.9 Кб, 58 просмотров)
xxbesoxx вне форума
Старый 09.06.2014, 12:22   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

всё. Отлично. Раз работает, значит, так и оставляйте!
Serge_Bliznykov вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов хранимой процедуры MySQL Dozent БД в Delphi 4 15.10.2013 03:24
Вызов хранимой процедуры Swatch PHP 0 02.08.2013 13:18
вызов хранимой процедуры sql из с# emdroof Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 4 14.05.2012 16:57
вызов хранимой процедуры в winforms emdroof Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 1 28.04.2012 16:40
Вызов хранимой процедуры welcomeTo Помощь студентам 0 04.08.2011 20:26