![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Доброго вам дня.
Остро встала необходимость, написать элементарную программу на 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
|
||||
|
||||
![]() Цитата:
Цитата:
Цитата:
Цитата:
![]() а что не получается то ? Поживу - увижу, Доживу - узнаю, Выживу - учту. ![]() [P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
|
Этот пользователь сказал Спасибо Yurk@ за это полезное сообщение: | ||
Budjaka (14.02.2013)
|
#3
|
|||
|
|||
![]() 1. На основании формулирования sql запроса. Например SELECT user_access FROM dbo.user WHERE user_name = 'Admin';
А можно пример программы которая вытаскивает всю таблицу, и отображает ее на форме? А так же описание компонентов, что будут использоваться и их настройки? ------------ Да вообще ничего не получается. Не работал в делфи с sql ) |
#4
|
|||
|
|||
![]() Цитата:
На форму кидаются: 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
|
|||
|
|||
![]() Все, в какую сторону копать я понял,спасибо огромное. Будет еще парочку вопросов. Например :
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
|
||||
|
||||
![]() Начну с последнего вопроса.
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']; 1. Если выбран тип поля TMemo, то так и будет. TMemo в отличии от тогоже Varchar может хранить текст в несколько строк, а стандартный грид не умеет выводить такой многострочный текст, потому выводится просто уведомление, что там внутри что-то есть. Для просмотра содержимого текущего Memo-поля можно использовать комонент TDBMemo. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
Budjaka (17.02.2013)
|