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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.04.2014, 21:35
madmax190 madmax190 вне форума
Прохожий
 
Регистрация: 24.04.2014
Сообщения: 7
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Работа со строкой

Подскажите как с запроса:
Select id_pib,list_pokar from kyrsova where name_pers = Иванов

вывести в столбик компонента Memo такие записи - id_pib, list_pokar, name_pers.
Ответить с цитированием
  #2  
Старый 24.04.2014, 22:27
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

FieldByName не?
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 25.04.2014, 09:22
madmax190 madmax190 вне форума
Прохожий
 
Регистрация: 24.04.2014
Сообщения: 7
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

А по подробнее, можно?
Ответить с цитированием
  #4  
Старый 25.04.2014, 09:44
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Код:
FieldByName('fieldname').asstring
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #5  
Старый 25.04.2014, 10:15
madmax190 madmax190 вне форума
Прохожий
 
Регистрация: 24.04.2014
Сообщения: 7
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Код:
FieldByName('fieldname').asstring

В скобках надо указывать то что хочеш вывести.
А надо чтобы автоматически удаляло select, from, where, = и то что идет после него. Если условий будет много то и and.
Ответить с цитированием
  #6  
Старый 25.04.2014, 10:55
Аватар для madMonia
madMonia madMonia вне форума
Новичок
 
Регистрация: 25.02.2014
Сообщения: 50
Версия Delphi: Delphi XE3
Репутация: 2545
По умолчанию

1) Берешь строку с запросом
2) Находишь в ней select
3) Находишь в ней From
4) Берешь из строки то, что между select и From
5) Разделяешь на подстроки - разделитель, запятая
6) Удаляешь лишние пробелы

Полезные функции:
1) Pos - ищет подстроку в строке
2) MidStr - позволяет извлечь подстроку из строки
3) Если создать объект TStringList, и в его свойство CommaText записать строку, содержащую слова, разделенные запятой. То в этом TStringList будет список данных слов.
4) Функция Trim удаляет лишние пробелы
__________________
Невозможно заточить карандаш тупым топором. Столь же тщетно пытаться сделать это десятком тупых топоров
Ответить с цитированием
  #7  
Старый 25.04.2014, 12:30
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

madMonia, нафиг, пусть использует RegExp.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение:
madmax190 (25.04.2014)
  #8  
Старый 25.04.2014, 14:52
madmax190 madmax190 вне форума
Прохожий
 
Регистрация: 24.04.2014
Сообщения: 7
Версия Delphi: Delphi 7
Репутация: 10
Радость

Спасибо помогло, а теперь как то что осталось загнать столбцом в Memo
Ответить с цитированием
  #9  
Старый 25.04.2014, 17:14
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от madmax190
Спасибо помогло, а теперь как то что осталось загнать столбцом в Memo
Memo столбцы не поддерживает. Но в него можно добавлять построчно:
Код:
Memo1.Lines.Add('Строка');
Ответить с цитированием
  #10  
Старый 28.04.2014, 07:57
phomm phomm вне форума
Новичок
 
Регистрация: 07.10.2013
Адрес: Тюмень
Сообщения: 50
Версия Delphi: 7/2007/XE+/FPC
Репутация: 22
По умолчанию

Автор, Вы уж определитесь, Вам надо текст запроса преобразовать в некие строки, или же результат выборки по данному запросу из базы выводить текстом ?
Выводить результаты выборки лучше в TDBGrid ну или на крайний случай в TStringGrid или TListBox (но для них надо будет использовать цикл обхода по "набору данных"). TMemo же практически не подходит для такой задачи.
Если же нужно просто слова выделить из текста запроса, то можно использовать Copy Pos и т.п. но будет негибко (чуть поменяете текст запроса и всё может слететь), можно "использовать RegExp" © но для Вас будет сложновато и в принципе, тоже может быть негибко.
Могу предложить обычный способ деления на слова с помощью TStringList:
Код:
procedure WordDivider(SL: TStringList);
var
  Text: string;
begin
  Text := SL.Text;
  StringReplace(text, '  ', ' ', [rfReplaceAll]); // kill all double-space
  SL.Delimiter := ' ';
  SL.DelimitedText := Text; // divide all Text into words
end;
// вызов
var
  SL: TStringList;
...
SL := TStringList.Create;
SL.Text := 'ваша строка с чем угодно';
WordDivider(SL);
for i := 0 to SL.Count - 1 do
  Memo1.Lines.Add(SL[i]); // выводим разбитый на слова текст
Для Вашего случая можно потом обращаться к конкретным номерам слов по SL[номер]

П.С. тема трёх MAD-ов
Ответить с цитированием
Этот пользователь сказал Спасибо phomm за это полезное сообщение:
madmax190 (28.04.2014)
  #11  
Старый 28.04.2014, 12:27
madmax190 madmax190 вне форума
Прохожий
 
Регистрация: 24.04.2014
Сообщения: 7
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Спасибо большое, это то что мне нужно.
Ответить с цитированием
  #12  
Старый 28.04.2014, 13:10
Аватар для madMonia
madMonia madMonia вне форума
Новичок
 
Регистрация: 25.02.2014
Сообщения: 50
Версия Delphi: Delphi XE3
Репутация: 2545
По умолчанию

Цитата:
Сообщение от phomm
Могу предложить обычный способ деления на слова с помощью TStringList:
Код:
  StringReplace(text, '  ', ' ', [rfReplaceAll]); // kill all double-space
А если там будет, не дай бог, три пробела? О_о
__________________
Невозможно заточить карандаш тупым топором. Столь же тщетно пытаться сделать это десятком тупых топоров
Ответить с цитированием
  #13  
Старый 28.04.2014, 13:19
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Да хоть двадцать, ключ rfReplaceAll заставит функцию делать замены пар пробелов до упора.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #14  
Старый 28.04.2014, 14:24
Аватар для madMonia
madMonia madMonia вне форума
Новичок
 
Регистрация: 25.02.2014
Сообщения: 50
Версия Delphi: Delphi XE3
Репутация: 2545
По умолчанию

Цитата:
Сообщение от Страдалецъ
Да хоть двадцать, ключ rfReplaceAll заставит функцию делать замены пар пробелов до упора.

Код:
    text := 'a    b';
    text := StringReplace(text, '  ', ' ', [rfReplaceAll]);
    text := StringReplace(text, ' ', '0', [rfReplaceAll]);

Результат: a00b (на DelphiXE3)
ЧЯДНТ?

P.S. В куске кода еще и результат работы StringReplace никуда не сохраняется.
__________________
Невозможно заточить карандаш тупым топором. Столь же тщетно пытаться сделать это десятком тупых топоров
Ответить с цитированием
Этот пользователь сказал Спасибо madMonia за это полезное сообщение:
phomm (28.04.2014)
  #15  
Старый 28.04.2014, 21:08
phomm phomm вне форума
Новичок
 
Регистрация: 07.10.2013
Адрес: Тюмень
Сообщения: 50
Версия Delphi: 7/2007/XE+/FPC
Репутация: 22
По умолчанию

Кстати, да, печалька какая-то, выдаёт аналогично как у Вас (a00b), а я верил этому флагу всю жизнь..
Надо будет запилить свою функцию схлопывания подстроки из дубликатов символов.
Ну а присвоение после стрингреплейса просто где-то потерялось, ну, скажем, это будет дом.задание для копипастеров
Ещё по идее такую надо поправочку, чтоб наверняка
Код:
Text := Trim(SL.Text);

Последний раз редактировалось phomm, 28.04.2014 в 21:10.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter