Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 119

/ вопрос открыт /

Приветствую, уважаемые эксперты!
Хочу сделать такую программку которая будет служить для изменения записей в полях базы данных которая на MS SQL. Есть таблица (fru) в ней два столбца название фрукта (frukt) и количество (kol). Вот программка должна помочь при вводе названия фрукта в поле Edit допустим выводил например в таблицу фрукт и количество и я мог изменять количество фруктов в базе. Подскажите пожалуйста как лучше это сделать?

winterfell Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: winterfell (статус: Посетитель)
Вопрос отправлен: 23 марта 2011, 10:27
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, winterfell!
Вначале нужно выбрать библиотеку, с помощью которой будет осуществлен доступ к MySQL. Вот три варианта
http://svdpro.info/page.php?id=18 (Direct Mysql Objects), http://www.da-soft.com/anydac/ (AnyDac - тут часть платных, а часть - бесплатных) и http://sourceforge.net/projects/zeoslib/ (zeoslib - весьма популярные и бесплатные).
любая библиотека умеет выполнять sql выражения (если не умеет - гнать в шею!). Я показываю выражения, Вы смотрите в примеры библиотеки и применяете их. Если не получится - пишите в минифоруме, что именно не получается и какую библиотеку выбрали, поможем.
Итак, что бы найти кол-во какого то фрукта, нужно такое выражение
SELECT frukt, kol FROM fru WHERE frukt="имя_фрукта" (так как имя фрукта находиться в edit и выполнять данное выражение будет какой то метод, то в коде это будет выглядеть где то так

execsql('SELECT frukt, kol FROM fru WHERE frukt="'+edit1.txt+'"');
)
Что бы сменить кол-во фруктов, используем такое выражение
UPDATE fru SET kol=новое_количество where frukt="имя_фрукта";
и ещё понадобится выражение для вставки нового фрукта
INSERT INTO fru (frukt, kol) VALUES ("имя_фрукта", количество)
Замечу, что строки (поле frukt) нужно брать в кавычки, а числа - нет. Если в строке присутствуют кавычки, то их нужно "ескейпить".

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 23 марта 2011, 11:19


Мини-форум вопроса

Всего сообщений: 6; последнее сообщение — 24 марта 2011, 17:50; участников в обсуждении: 3.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 23 марта 2011, 21:21 [#1]:

to Вадим К - в вопросе шла речь не о MySQL, а о MS SQL. Поэтому можно воспользоваться стандартными компонентами ADO.
А вместо двойных кавычек можно использовать функцию QuotedStr().
winterfell

winterfell (статус: Посетитель), 24 марта 2011, 03:30 [#2]:

Вот так написал поправьте пожалуйста что не верно делаю?
procedure TForm1.Button1Click(Sender: TObject);
begin
dbs.Open;
q1.SQL.Text:='select card_number,bonus from card where card_number = '+edit1.Text+';
dbs.Close;
end;
 
end.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 24 марта 2011, 05:44 [#3]:

При чем тут card, если в вопросе речь шла о фруктах?
если в Edit1 вводится число, то только убрать +' после edit1.text.
если в edit1 могут вводиться любые символы, то надо сделать так:
'select card_number,bonus from card where card_number = '+QuotedStr(edit1.Text);

Да! Если хотите увидеть данные на экране, то уберите dbs.close
winterfell

winterfell (статус: Посетитель), 24 марта 2011, 08:09 [#4]:

Фрукты были для примера. Делаю вот так и при нажатии кнопки в таблице нечего не выводится что не так делаю?
procedure TForm1.Button1Click(Sender: TObject);
begin
dbs.Open;
q1.SQL.Text:='select card_number,bonus from card where card_number = '+edit1.Text;
 
end;
 
end.
Вадим К

Вадим К (статус: Академик), 24 марта 2011, 11:07 [#5]:

Цитата (Мережников Андрей):

в вопросе шла речь не о MySQL, а о MS SQL
А я в тексте вчера видел MySQL:) Но суть сиквел выражений от этого хуже не стает.

Цитата (winterfell):

Фрукты были для примера. Делаю вот так и при нажатии кнопки в таблице нечего не выводится что не так делаю?

Выражение не только нужно присвоить, а и выполнить!
там должно быть что то вида
q1.open(); или q1.exec()
Галочка "подтверждения прочтения" - вселенское зло.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 24 марта 2011, 17:50 [#6]:

Цитата (Вадим К):

А я в тексте вчера видел MySQL:) Но суть сиквел выражений от этого хуже не стает.


А я по поводу SQL выражений и не высказывался :-) только про компоненты для доступа.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:29
Выполнено за 0.03 сек.