Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.02.2013, 11:35
Budjaka Budjaka вне форума
Прохожий
 
Регистрация: 13.02.2013
Сообщения: 15
Репутация: 10
По умолчанию

Доброго вам дня.
Остро встала необходимость, написать элементарную программу на Delphi, но как для человека который не работал из Delphi с SQl, она непосильна, т.к. некоторые моменты неясны. Вкратце о том что делаю :
Программа будет работать с БД MySQL или MS SQL (на данный момент).
В БД содержатся 6 табличек. В каждой табличке по 4 столбца.
Программа по замыслу должна :
1. На первой форме как то вывести всю табличку 1 (table1)
2. На второй форме вывести всю табличку 2 (table2), и позволить пользователю кликнув мышой в определенную ячейку, занести значение этой ячейки, например в Edit1
3. На третьей форме отображения таблицы не будет. программа должна считать нужное поле из таблицы 3, и поместить это значение в переменную
Вот. Сам язык SQL мне знаком, пользуюсь постоянно. Однако,начал читать по делфям и компонентам предоставляющим доступ к sql - запутался намертво, DBExpress, DBGO, BDE , жуть.
Вопросы собственно таковы (если можно ответы нумеруйте):
1. С помощью каких компонентов создать подключение к БД, и выполнить запрос?
2. DBExpress, DBGO, BDE - с точки зрения ламера, это 3 почти одинаковых набора, и выбрать надобно один, и работать с компонентами с этого набора?
3. С помощью чего на форму выводится информация с SQL запроса?
4. Можно ли результат SELECT засунуть в переменную?
Для абсолютной и полной ясности, вы можете даже показать мне код, и параметры нужных компонентов, где :
1. На первой форме создается подключение к БД 'DBNAME', выполняется SELECT * FROM dbo.users, и все это дело выводится на форму
2. На этой же форме,когда предыдущее условие выполнено, и на форме уже готовая табличка, при клике на определенную ячейку, значение этой ячейки помещается в переменную.
3. На этой же форме Выполняется SELECT user_name FROM dbo.users WHERE user_id = '1', и результат запроса кладется в переменную USNAME.
Это будет просто супер.
Подскажите пожалуйста, если надо - отблагодарю, или помогу чем смогу, за исключением программирования).
Заранее спасибо..
Или возможно есть компонент который просто будет выводить таблицу, без работы со всякими SQL запросами прямо из БД?

Быть может я неверно сформулировал свой вопрос?
Ребят, выручите пожалуйста

Последний раз редактировалось M.A.D.M.A.N., 18.02.2013 в 08:48. Причина: Объединил сообщения
Ответить с цитированием
  #2  
Старый 14.02.2013, 12:42
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Цитата:
3. На третьей форме отображения таблицы не будет. программа должна считать нужное поле из таблицы 3, и поместить это значение в переменную
на основании какого критерия будет определятся нужное поле?
Цитата:
1. С помощью каких компонентов создать подключение к БД, и выполнить запрос?
2. DBExpress, DBGO, BDE - с точки зрения ламера, это 3 почти одинаковых набора, и выбрать надобно один, и работать с компонентами с этого набора?
вкладка ADO или DBGO по новому
Цитата:
3. С помощью чего на форму выводится информация с SQL запроса?
вручную или через DBGrid
Цитата:
4. Можно ли результат SELECT засунуть в переменную?
можно

а что не получается то ?
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
Этот пользователь сказал Спасибо Yurk@ за это полезное сообщение:
Budjaka (14.02.2013)
  #3  
Старый 14.02.2013, 18:46
Budjaka Budjaka вне форума
Прохожий
 
Регистрация: 13.02.2013
Сообщения: 15
Репутация: 10
По умолчанию

1. На основании формулирования sql запроса. Например SELECT user_access FROM dbo.user WHERE user_name = 'Admin';
А можно пример программы которая вытаскивает всю таблицу, и отображает ее на форме?
А так же описание компонентов, что будут использоваться и их настройки?
------------
Да вообще ничего не получается. Не работал в делфи с sql )
Ответить с цитированием
  #4  
Старый 14.02.2013, 21:07
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,100
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Budjaka
1. На основании формулирования sql запроса. Например SELECT user_access FROM dbo.user WHERE user_name = 'Admin';
А можно пример программы которая вытаскивает всю таблицу, и отображает ее на форме?
А так же описание компонентов, что будут использоваться и их настройки?
------------
Да вообще ничего не получается. Не работал в делфи с sql )

На форму кидаются:
ADOConnection
ADOQuery (ADOTable если всегда нужна вся таблица)
DataSource
DBGrid

Связываются (DBGrid -> DataSource -> ADOTable/ADOQuery -> ADOCOnnection /по соотв. свойствам, обычно имеют имена, перекликающиеся с именем соотв. компонента/), в ADOConnection указывается ConnectionString, в ADOTable - TableName (или нужный запрос в ADOQuery). Далее, наример в OnCreate формы, пишется что-то типа:
Код:
procedure TForm1.FormCreate(Sender : TObject);
begin
  ADOConnection1.Connected := True;
  ADOTable1.Open;
end;
Если все сделано правильно, то при запуске программы на форме в гриде покажется содержимое соотв. таблицы.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
Budjaka (15.02.2013)
  #5  
Старый 15.02.2013, 09:04
Budjaka Budjaka вне форума
Прохожий
 
Регистрация: 13.02.2013
Сообщения: 15
Репутация: 10
По умолчанию

Все, в какую сторону копать я понял,спасибо огромное. Будет еще парочку вопросов. Например :
1. Почему в DBGRID у меня вместо нужного мне текста везде отображается (MEMO), если тип данных varchar(max).
2. Что такое varchar(50) - тип данный в котором максимум 50 символов?
3. Как результат SELECT user_pass FROM Tuser WHERE user_name = 'Admin' ; положить в переменную?
Заранее спасибо_)

Последний раз редактировалось Budjaka, 15.02.2013 в 11:26.
Ответить с цитированием
  #6  
Старый 15.02.2013, 19:44
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Начну с последнего вопроса.
3. Примерно так:
Код:
Q: TAdoQuery;
S: String;
...
Q.SQL.Text := 'SELECT user_pass FROM Tuser WHERE user_name = :user_name' ;
Q.Parameters.ParamValues['user_name'] := 'Admin';
Q.Open;
while not Q.Eof
do S := Q.FieldValues['user_pass'];
2. В принципе да, но в отличие от String[50] где поле будет всегда 50 символов, независимо от содержания, varchar хранит только значимую часть строки, потому намного более компактная вещь для хранения данных
1. Если выбран тип поля TMemo, то так и будет. TMemo в отличии от тогоже Varchar может хранить текст в несколько строк, а стандартный грид не умеет выводить такой многострочный текст, потому выводится просто уведомление, что там внутри что-то есть. Для просмотра содержимого текущего Memo-поля можно использовать комонент TDBMemo.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение:
Budjaka (17.02.2013)
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:45.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025