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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 09.10.2013, 22:02   #1
8tomat8
Пользователь
 
Регистрация: 14.09.2013
Сообщений: 46
Вопрос Запрос данных из SQL (Delphi)

Хочу присвоить переменной значение из поля базы данных.
Пока пытаюсь как минимум научиться строить правильно условие.

Строка запроса в SQL у меня выглядит вот так
Код:
SELECT [fuser] , [FWHERE] FROM [GDPDATA].[dbo].[TUSER] WHERE FUSER='KNOPKA\Username'
*Где Username - имя текущего пользователя

В Delphi у меня вот что происходит
Код:
procedure TFormHello.FormCreate(Sender: TObject);
Var
UN,UserName:string;
begin
UserName:=Trim(GetCurrentUserName);
UN:=(#39+'KNOPKA\'+UserName+#39);
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT [fuser] , [FWHERE] FROM [GDPDATA].[dbo].[TUSER] WHERE FUSER= :username');
ADOQuery1.Active:=True;
ADOQuery1.Parameters.ParamByName('username').Value:=UN;
//Showmessage(UN);
end;

GetCurrentUserName это переменная в которой храниться текущее имя пользователя.

Но в Grig у меня отображается пустое поле. Хотя когда делаю запрос без WHERE - показывает весь список юзверей.


От сюда вопрос. Что я не правильно задал в условии? И как Мне в случаи удачного запроса присвоить ответ переменной?

PS Будет ли данная строка работать?
Код:
Peremennaya:=ADOQuery1.FieldByName('[FWHERE]').AsString;
8tomat8 вне форума
Старый 09.10.2013, 22:12   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

1.Параметр до активации нужно задавать, а не после. И не нужно #39 в значение параметра тулить
2.Будет, если датасет открыт и есть такое поле
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 09.10.2013 в 22:15.
Аватар вне форума
Старый 09.10.2013, 22:20   #3
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
[fuser] , [FWHERE]
вот а зачем тут ф в начале? типа чтоб не забыть сто это филд? и часто забываете? да и это колонка а не филд
ой госпидя до чегож доходят порой мыслители..
eval вне форума
Старый 09.10.2013, 22:44   #4
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

А я вот всё хотел спросить: в MySQL можно в самом запросе назначать переменную и её же использовать. Например

Код:
SELECT *, @id:=table.id, (SELECT COUNT(*) FROM table WHERE ref=@id) as ....и.т.д.
Можно ли так использовать в делфи?

-----------------------
Добавлено. Я имею ввиду в работе с MS Access
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума
Старый 09.10.2013, 22:58   #5
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

это бессмысленно, в процедуре еще куда ни шло, ну так в аксесе нет полноценных процедур
eval вне форума
Старый 09.10.2013, 23:09   #6
8tomat8
Пользователь
 
Регистрация: 14.09.2013
Сообщений: 46
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
вот а зачем тут ф в начале? типа чтоб не забыть сто это филд? и часто забываете? да и это колонка а не филд
ой госпидя до чегож доходят порой мыслители..
SQL базу создавал не я и поля именовал не я) Так что пардонте)


Еще вопрос. При каждом запуске программы спрашивает логин и пароль, хотя я поставил аутентификацию через windows
8tomat8 вне форума
Старый 09.10.2013, 23:12   #7
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Цитата:
Еще вопрос. При каждом запуске программы спрашивает логин и пароль, хотя я поставил аутентификацию через windows
Код:
ADOConnection1.LoginPrompt:=false;
Не то?
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума
Старый 10.10.2013, 03:51   #8
8tomat8
Пользователь
 
Регистрация: 14.09.2013
Сообщений: 46
По умолчанию

Цитата:
Сообщение от grominfo Посмотреть сообщение
Код:
ADOConnection1.LoginPrompt:=false;
Не то?
Оно) Спасибо большое)))
8tomat8 вне форума
Старый 10.10.2013, 04:00   #9
8tomat8
Пользователь
 
Регистрация: 14.09.2013
Сообщений: 46
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
2.Будет, если датасет открыт и есть такое поле
Не понял честно говоря что такое датасет. А поле есть такое) данные успешно выгружаются в таблицу. Но теперь выдает ошибку при попытке присвоить значение переменной.


вот сам код
Код:
procedure TFormHello.FormCreate(Sender: TObject);
Var
UN,UserName,Prava:string;
begin
UserName:=Trim(GetCurrentUserName);
UN:=('KNOPKA\'+UserName);
ADOConnection1.LoginPrompt:=false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT [FWHERE] FROM [GDPDATA].[dbo].[TUSER] WHERE FUSER= :username');
ADOQuery1.Parameters.ParamByName('username').Value:=UN;
ADOQuery1.Active:=True;
Prava:=ADOQuery1.FieldByName('[FWHERE]').AsString;
//Showmessage(Prava);
end;
8tomat8 вне форума
Старый 10.10.2013, 06:29   #10
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Поле называется не [FWHERE] , а просто FWHERE, а [] это экранирование в sql (оно для текста запроса может использоваться, но более нигде).
Если не совсем понятно, правильный вариант вот:
Код:
Prava:=ADOQuery1.FieldByName('FWHERE').AsString;
Датасет - набор данных, в Вашем случае это кверя (adoquery), но это могут быть и адопроцедуры и любой наследник TADODataSet (емнип).

Последний раз редактировалось phomm; 10.10.2013 в 06:34.
phomm вне форума
Закрытая тема


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL запрос на дополнение данных SERG1980 БД в Delphi 2 02.06.2011 08:59
База Данных Delphi и Paradox 7 не работает запрос sql DJ DIMON БД в Delphi 4 09.12.2010 12:07
sql-запрос на выборку данных kity Помощь студентам 3 07.06.2010 17:18
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
SQL запрос и редактирование данных Dux БД в Delphi 7 01.09.2008 12:17