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

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

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

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

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

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

Цитата:
Как добавлять и удалять записи разобрался, надеюсь правильно.
Я думаю нет . Надо еще тренировать https://yadi.sk/d/W8IkJGqziYGjd
Код:
private
    procedure  QueryOPEN; // Open Query
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
 // INSERT
begin
 if (LabeledEdit1.Text<>'') and (LabeledEdit2.Text<>'')then
 begin
   with ADOQuery1 do
   begin
     SQL.Clear;
     SQL.Text := 'INSERT INTO Tab1 ( Nam, Color ) '+
                 'VALUES (:pNam, :pColor)';
     Parameters.ParamByName('pNam').Value := Trim(LabeledEdit1.Text);
     Parameters.ParamByName('pColor').Value := Trim(LabeledEdit2.Text);
     ExecSQL;
   end;
 end;
  QueryOPEN; // Open Query
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
// DELETE
begin
  with ADOQuery1 do
  begin
    SQL.Text := 'DELETE FROM Tab1 WHERE Код ='+ FieldByName('Код').AsString +' ';
    ExecSQL;
  end;
  QueryOPEN; // Open Query
end;

procedure TForm1.QueryOPEN;
begin
 with ADOQuery1 do
 begin
   SQL.Text := 'SELECT * FROM Tab1 ORDER BY 1 ASC';
   Open;
 end;
end;

end.
Цитата:
where id=1 потому что мне нужна запись из Tab1 где id=1 разве не правильно?
Понятно , и
Цитата:
Разве ADOQuery1 закрывать после запросов не надо?
Закрывать нет ! Открывать да !
Цитата:
дальше обращаюсь ADOQuery1.FieldByName('names').AsSt ring и получаю значение names, могу и другое получить (color), почему в старом проекте не работало так и не понял
Потому что писал где то не правильно ! угадай где

Последний раз редактировалось xxbesoxx; 19.08.2015 в 18:44.
xxbesoxx вне форума
Старый 19.08.2015, 23:11   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

xxbesoxx, а что Вас смущает?!
я тоже всегда закрываю датасеты, когда они мне уже не нужны!


Цитата:
Сообщение от Evil_Net Посмотреть сообщение
пробовал, ошибка синтаксиса в инструкции INSERT INTO
во-первых, попробуй экранировать имена. возможно, что какое-то из имён конфликтует с ключевыми словами:
Код:
ADOQuery1.Sql.Text := 'insert into Tab1 ([Names],[Color]) values  ('+quotedstr(edit1.text)+','+quotedstr(n)+')');
во-вторых, лучше использовать параметры (см. пример от xxbesoxx в пост #11)

в-третьих, если не сработает - приводите код ошибки. И покажите структуру таблицы tab1, возможно, что Вы не всё нам рассказываете...
Serge_Bliznykov вне форума
Старый 19.08.2015, 23:48   #13
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
xxbesoxx, а что Вас смущает?!
я тоже всегда закрываю датасеты, когда они мне уже не нужны!
Тогда надо еще второе Query и так работает
Код:
 
 With ADOQuery2 do
 begin
   Sql.Clear;
   Sql.Add(' SELECT * from Tab1 where Код = 11 ');
   Open;
   Edit1.Text := ADOQuery1.FieldByName('Nam').AsString;
 end
Но я не вижу смысл ADOQuery2.Close; после фильтр получаем значения в Edit и все фильтр не работает да ? Какая разница вы его закройте или оставите открыты ? Он что нагружает память ? .

Последний раз редактировалось xxbesoxx; 19.08.2015 в 23:54.
xxbesoxx вне форума
Старый 20.08.2015, 12:36   #14
Evil_Net
Пользователь
 
Регистрация: 04.08.2015
Сообщений: 48
По умолчанию

xxbesoxx, посмотрел Ваш пример, спасибо!

Насчет закрытия пожалуй соглашусь, что можно не закрывать, много памяти не отнимет.

Использовать процедуру QueryOPEN, для обновления данных в DBGrid логично если присутствует DBGrid, но он мне не нужен был.

Из примера не понял только одного, при удалении как FieldByName('Код') становится необходимым значением при выборе нужно строки в DBGrid?

В многих статьях читал, что нужно вешать на DBGrid OnCellClick, чтобы узнавать текущую строку:
Код:
id:=ADOQuery1.Fields.Fields[0].AsInteger;
Evil_Net вне форума
Старый 20.08.2015, 13:01   #15
Evil_Net
Пользователь
 
Регистрация: 04.08.2015
Сообщений: 48
По умолчанию

Serge_Bliznykov, экранирование имен помогло) скорее всего из-за Names проблемы были!
Evil_Net вне форума
Старый 20.08.2015, 15:00   #16
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Насчет закрытия пожалуй соглашусь, что можно не закрывать, много памяти не отнимет.
вообще не отнимает . после запроса мы открываем Query-open и он после этого не работает
Цитата:
Из примера не понял только одного, при удалении как FieldByName('Код') становится необходимым значением при выборе нужно строки в DBGrid?
Да, проверяй есть силка на примере
Цитата:
В многих статьях читал, что нужно вешать на DBGrid OnCellClick, чтобы узнавать текущую строку:
Книга читай и тренируй для себя ...
xxbesoxx вне форума
Старый 20.08.2015, 17:33   #17
Evil_Net
Пользователь
 
Регистрация: 04.08.2015
Сообщений: 48
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
вообще не отнимает . после запроса мы открываем Query-open и он после этого не работает

Да, проверяй есть силка на примере

Книга читай и тренируй для себя ...
Пример скачивал и смотрел, в коде ни чего не нашел, может в параметрах DBGrid'a что то указывалось.

Еще один вопрос не по теме:
к локальной базе MySQL подключаюсь через драйвер ODBC (установленный отдельно), а к базе внешней (интернет) не хочет подключаться совсем.
Если скомпилировать проект, то при запуске его на другом компьютере должен быть тоже установлен драйвер ODBC?
Может посоветуете метод или компонент какой то для работы с внешней MySQL, на форуме читал про MyDAC, но инструкций по установке не нашел внятной.
Evil_Net вне форума
Старый 20.08.2015, 20:26   #18
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Пример скачивал и смотрел, в коде ни чего не нашел,
Плохо смотрел
Цитата:
к локальной базе MySQL подключаюсь через драйвер ODBC (установленный отдельно), а к базе внешней (интернет) не хочет подключаться совсем.
Если скомпилировать проект, то при запуске его на другом компьютере должен быть тоже установлен драйвер ODBC?
MySQL это клиент серверный СУБД .! локальной базе эту Paradox и Access по настройку смотрите суда http://programmersforum.ru/showthread.php?t=265130
Цитата:
на форуме читал про MyDAC,
Да очень хорошо работает
Цитата:
но инструкций по установке не нашел внятной.
Плохо искал . На форуме не обсуждается установка крекор и нельзя размешать силки

Последний раз редактировалось xxbesoxx; 20.08.2015 в 20:40.
xxbesoxx вне форума
Старый 20.08.2015, 21:00   #19
Evil_Net
Пользователь
 
Регистрация: 04.08.2015
Сообщений: 48
Печаль

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
MySQL это клиент серверный СУБД .! локальной базе эту Paradox и Access по настройку смотрите суда http://programmersforum.ru/showthread.php?t=265130
Я это знаю.

Мне была поставлена цель: определенные работники через программу, на своих местах, просматривают, вносят необходимые данные или изменения, которые сохраняются в базу MySQL. На информационном терминале (стенд с сенсорным экраном), запущена программа, в которой могут получать необходимую информацию с базы другие работники.

Приложения почти написаны, в фирме стоит сервер, на котором можно поднять сервер MySQL, сначала думал так и сделать, но появилась еще одна задача, через сайт фирмы (он на хостинге), можно было бы тоже узнавать эту информацию с базы (как организовать на сайте я знаю, быстро написать скрипт на php, чтобы дергал с базы.

И тут я подумал может сразу на клиентских компах использовать базу внешнюю, скорость канала интернет отличная, запросов немного, но как подключиться к ней так и не смог.

Уже думал чтобы с локальной базы данные копировались во внешнюю, через определенный промежуток времени, но опять же чем это организовать?
Evil_Net вне форума
Старый 21.08.2015, 00:03   #20
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Мне была поставлена цель: определенные работники через программу, на своих местах, просматривают, вносят необходимые данные или изменения, которые сохраняются в базу MySQL.
Купите хостинг или статически IP от вашего провайдера
Цитата:
быстро написать скрипт на php, чтобы дергал с базы.
Ну как вам удобно
Цитата:
Уже думал чтобы с локальной базы данные копировались во внешнюю, через определенный промежуток времени,
Можно
xxbesoxx вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить значения после определенного символа Banjo Microsoft Office Excel 17 04.04.2017 14:06
вывод данных при выборе определенного значения из раскрывающегося списка Андрей79 PHP 4 04.03.2012 21:58
Получение значения при вводе определенного значения armanmal Microsoft Office Excel 6 21.11.2011 17:30
Результат до определенного значения и не выше. mato Общие вопросы C/C++ 8 04.12.2009 16:07
Вывод сообщения на экран при выборе из списка определенного значения MaGistR Microsoft Office Excel 1 31.01.2008 09:10