Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/27: Рейтинг темы: голосов - 27, средняя оценка - 4.96
5 / 5 / 0
Регистрация: 14.09.2009
Сообщений: 80

ADO и Делфи 7

19.02.2010, 01:46. Показов 5787. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем времени суток! Если вопрос был где-то или поднимался, простите заранее..не нашёл! Есть таблица с данными в SQL Server 2005 написал запрос типа:
SQL
1
2
3
SELECT Colonka1
FROM Table1
WHERE Colonka2 = '555'
А как мне вывести значение выборки этой в переменную в Делфи? И ещё маленький вопросик.. Есть данные с Датами в таблице, а на форме DataTimePicker1 and DataTimePicker2..нужно, чтобы когда указываешь даты в этих пикерах, происходил запрос на выборку данных в промежуток между этими датами! Подскажите идею как сделать такое!
__
P.S. Спасибо..и за ламеризм пардон, я только учусь =)!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.02.2010, 01:46
Ответы с готовыми решениями:

компоненты ADO в делфи 7!
парни помогите не могу до петрить как привезать к бд эти компоненты вот что у мя получилось исправте есле что не так или подскажите что...

ADO+MS SQL: как узнать количество обработанных строк при insert в ADO Query?
Добрый день. При выполнении запроса в MS SQL insert into ..(,,) select 0,20,'Text' where not exists (select 1 from .. where...

Как в Делфи выполнить код, написанный на Делфи, например в поле ввода?
Есть способ в Делфи выполнить код, написанный на Делфи, например в поле ввода?

15
23 / 22 / 3
Регистрация: 21.01.2010
Сообщений: 95
19.02.2010, 12:18
taxo
Для дат в условие отбора вставляешь "Column1 BETWEEN DataTimePicker1.Date AND DataTimePicker2.Date"

А к SQL-евской базе цепляйся через ADOConnection и ADOQuery, а потом пользуй набор записей как хочешь.
0
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
19.02.2010, 13:21
Это всё описано в книгах, потому можно прочитать. К прмеру А.Я. Архангельский написал очень неплохие книги и есть примеры по Вашему вопросу
0
5 / 5 / 0
Регистрация: 14.09.2009
Сообщений: 80
19.02.2010, 15:39  [ТС]
Я просмотрел..не нашёл что мне надо=(..как подключить ADODataSet и как потом спомощью запроса вывести мне в Edit или присвоить переменной..
Попытался сделать так..может кто-ошибки подскажет или направит на истинный путь:
SQL
1
2
3
4
5
AdoDataSet1.Active:=FALSE;
  AdoDataSet1.CommandType:=CmdTable;
   AdoDataSet1.CommandText:='Select ParameterOfUser From MainTable Where (ParameterOfUser=5640)';
   AdoDataSet1.FieldByName('ParameterOfUser').AsString:=Edit1.Text ;
   AdoDataSet1.Active;
Или эт вообще не то??=(
___
P.S. Я человек, а значит мне свойственны ошибки даже в простых примерах (ну бывает не доглядел что-то).
0
5 / 5 / 0
Регистрация: 14.09.2009
Сообщений: 80
23.02.2010, 13:35  [ТС]
Ну чё никто не поможет?? очн надо просто..
0
23 / 22 / 3
Регистрация: 21.01.2010
Сообщений: 95
24.02.2010, 07:58
На DataModule бросаю ADOConnection, ADOQwery и DataSource. ADOConnection привязываю к базе. К нему цепляю ADOQwery, а уже к ADOQwery DataSource.
Об этом почитай в книжках, там все просто и подробно описано.

Как я понял тебе надо проверить наличие учетной записи, т.е. есть ли вообще такой пользователь.
В свойстве ADOQwery.SQL.Text впиши свой запрос 'Select (Колонка1) From (Таблица) Where (Колонка2) = ''' + Edit1.Text + '''' и сделай его активным.
Если свойство ADOQwery.RecordCount равно 0, то значит в запросе нет ни одной записи - ничего.
Если есть, то значение поля, в твоем случае, можно получить через свойство ADOQwery.Fields[0].Value (нумерация колонок в запросе начинается с 0).
0
5 / 5 / 0
Регистрация: 14.09.2009
Сообщений: 80
24.02.2010, 11:10  [ТС]
Об этом почитай в книжках, там все просто и подробно описано.
Я вот именно не могу найти в книжках, как соеденить SQL Server с Делфи 7, и например передать в Делфи значения какого-нибудь стобца или строки. Спасибо НикоН за проверку учётной записи=)..но она пока мне ненужна, но думаю пригодится!
сделал так:
Delphi
1
2
3
4
5
6
7
8
9
 
with AdoDataSet1 do
  begin
    if AdoDataSet1.Active then Close;
    //AdoDataSet1.CommandType:=CmdTable;
    CommandText:= 'Select Kol1,kol2,kol3,kol4 From MainTable Where ParameterOfUser = 5640';//[B]вот тут правда загвоздка..в селекте надо все поля указывать, пока не понял почему=)[/B]
    //CommandText:= 'Select kol1 From MainTable Where ParameterOfUser=5640 ';
    AdoDataSet1.Open;
    Edit1.Text:= AdoDataSet1.FieldByName('kol1').AsString;
0
23 / 22 / 3
Регистрация: 21.01.2010
Сообщений: 95
24.02.2010, 13:23
У ADOConnection есть свойство ConnectionString. Щелкаешь по кнопке с тремя точками и в появившемся окне выбираешь Use Connection String, жмешь Build. В появившемся окне выбираешь поставщика Microsoft OLE DB Provider for SQL Server и нажимаешь на кнопку Далее>>. Выбираешь сервер, базу и проверяешь подключение.
А потом можно юзать базу всеми мыслемыми и немыслемыми способами.
0
5 / 5 / 0
Регистрация: 14.09.2009
Сообщений: 80
02.03.2010, 15:06  [ТС]
Не стал создавать новой темы, как продолжение.. Прошу оказать мне мои ошибки или подсказать идеи..
Есть 2 DataPickera и ComboBox с гридом. Написал процедуру, чтобы из таблицы SQL serv выборка была в Боксе через DataSet2..Всё работает нормально.Сейчас мне надо, чтобы в грид выводились поля по условию между датами в пикерах и по наименованию в боксе..но появляются только пустые поля в гриде! Всё проверил=(..может ошибка в коде?
Delphi
1
2
3
4
5
6
7
8
9
with AdoDataSet1 do
     begin
      if AdoDataSet1.Active then Close;
 
      CommandText:= 'Select Сolumn1, Сolumn2,Сolumn3 From MainTable Where TekData>=(:d1) And TekData<(:d2) and Сolumn4=:np';
     AdoDataSet1.Parameters.ParamByName('d1').Value:=(DateTimePicker1.DateTime);
     AdoDataSet1.Parameters.ParamByName('d2').Value:=(DateTimePicker2.DateTime);
     AdoDataSet1.Parameters.ParamByName('np').Value:=ComboBox1.Text;
     AdoDataSet1.Open;
__
P.S. Я человек, а значит мне свойственны ошибки даже в
простых примерах (ну бывает не доглядел что-то).
0
Админю немножко :)
126 / 115 / 25
Регистрация: 05.01.2009
Сообщений: 889
02.03.2010, 17:30
taxo, я не профи, но возможно нужно формат даты в строку перегнать, попробуй, но я не уверен.
Delphi
1
2
3
 
AdoDataSet1.Parameters.ParamByName('d1').Value:=DateToStr(DateTimePicker1.DateTime);
AdoDataSet1.Parameters.ParamByName('d2').Value:=DateToStr(DateTimePicker2.DateTime);
0
23 / 22 / 3
Регистрация: 21.01.2010
Сообщений: 95
02.03.2010, 22:14
taxo,
Даты в запрос должны подаваться в амеровском формате - #mm/dd/yyyy# (вместе с решетками)
Попробуй в условии использовать оператор BETWEEN(между), получится так:
Where (TekData BETWEEN :vBeginDate And :vEndDate) And (Сolumn4=:np)
Вот со второй частью условия у меня сомнений больше.
По правилам, в запрос SQL текст подается в апострофах (для примера Where FM='Иванов')
Ты передаешь в качестве параметра значение комбобокса и я уверен, что там значения без апострофов. Вот я и не знаю можно ли сделать так Сolumn4=':np'? Поймет ли это машина?

Когда у меня возникают сомнения в правильности написания запроса, я перед выполнением запроса делаю MessageBox() и закидываю туда текст запроса.

Удачи
0
45 / 45 / 7
Регистрация: 28.05.2009
Сообщений: 87
03.03.2010, 00:02
Сolumn4=':np' к сожалению не поймет, сам проверял недавно но проглатывает и без апострофов что удивительно
1
5 / 5 / 0
Регистрация: 14.09.2009
Сообщений: 80
03.03.2010, 11:29  [ТС]
Drongo спасибо, но тут мне не нужно вообще их переводить!! В гриде это не важно..=)

НикоН
Ты передаешь в качестве параметра значение комбобокса и я уверен, что там значения без апострофов. Вот я и не знаю можно ли сделать так Сolumn4=':np'? Поймет ли это машина?
А как тогда значение ComboBoxa передать? мне просто нужно два условия выборки, по дате и значению, что в комбобоксе..=(
0
23 / 22 / 3
Регистрация: 21.01.2010
Сообщений: 95
04.03.2010, 09:47
taxo,
Цитата Сообщение от taxo Посмотреть сообщение
Drongo спасибо, но тут мне не нужно вообще их переводить!! В гриде это не важно..=)
Это нужно не для отображения в гриде, а для правильного построения запроса.

Цитата Сообщение от slayer Посмотреть сообщение
Сolumn4=':np' к сожалению не поймет, сам проверял недавно но проглатывает и без апострофов что удивительно
Для начала попробуй не менять строку
AdoDataSet1.Parameters.ParamByName('np') .Value:=ComboBox1.Text;
если не получится то измени ее на такую
AdoDataSet1.Parameters.ParamByName('np') .Value:= '''' +ComboBox1.Text + '''';
или
AdoDataSet1.Parameters.ParamByName('np') .Value:= #39 +ComboBox1.Text+ #39;
это одно и тоже только записано по разному, тогда в качестве параметра будет передаваться значение уже с апострофами
0
5 / 5 / 0
Регистрация: 14.09.2009
Сообщений: 80
04.03.2010, 12:20  [ТС]
Я пробывал так Никон, но не получалось, сделал так..
вроде получилось=)! :

Delphi
1
2
3
4
5
6
7
if ComboBox1.Text='' then
       begin
       showmessage('Combo pust');
       exit;
       end
     else
     AdoDataSet3.Parameters.ParamByName('np').Value:=[U]'' +(ComboBox1.Text)+ '';[/U]
Только если различие между ''''(4) и ''(2) пока не понял!
0
23 / 22 / 3
Регистрация: 21.01.2010
Сообщений: 95
04.03.2010, 13:01
Цитата Сообщение от taxo Посмотреть сообщение
Только если различие между ''''(4) и ''(2) пока не понял!
Есть. Ради интереса, попробуй присвоить текстовой переменной разные значения и увидишь различия.
S:=''+'Иванов'+''; даст строку Иванов
S:=''''+'Иванов'+''''; даст строку 'Иванов'
т.е в первом случае это просто лишний кусок кода, а во втором апостроф в строке. Запись S:='''Иванов'''; тоже даст 'Иванов'
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.03.2010, 13:01
Помогаю со студенческими работами здесь

У меня стоит Делфи 5, возможно еще поставить и Делфи 7, или будут проблемы?!
Где можно скачать Делфи 7, дайте ссылку! У меня стоит Делфи 5, возможно еще поставить и Делфи 7, или будут проблемы?!

Здр, пожалуйста попробуйте запутсить .exe написанное на делфи 10 у себя, те у кого делфи 7
и скиньте скрин пожалуйста срочно http://www.fayloobmennik.net/4874373 перед тес как запустить, создайте файлы: 1.txt, 2.txt и key.txt...

Как открыть doc в делфи? Или как можно написать огромный текст в делфи?
Думаю поймете. Я решил сделать сборник книг. И в Delphi добавил список книг (в виде кнопок) и при выборе я бы хотел открыть форму где был...

Отличия ADO.NET'03 и ADO.NET'05
Друзья, есть ли отличия в технологии ADO.NET для 2003 и для 2005, и насколько они велики? Вопрос вот почему, имеет ли смысл, в случае...

ADO.NET Connection->ADO Connection
Может, кто-нибудь знает, как ссылку на объект Connection из ADO.NET преобразовать в ссылку на COnnection из ADO, база одинаковая.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru