Основы работы с БД

Любые обсуждения, не нарушающие правил форума.

Модератор: Модераторы

Re: Основы работы с БД

Сообщение alexs » 30.04.2008 15:00:57

полнотекстовый поиск в SQL БД обычно реализуется простешим sql оператором like
Последний раз редактировалось alexs 30.04.2008 15:06:21, всего редактировалось 1 раз.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Основы работы с БД

Сообщение shade » 30.04.2008 15:02:56

Troublemaker писал(а):И честно пытаюсь разобраться с новой для меня идеологией разработки.

Несочтите за спам и флуд
мой опыт: как shade постигает очередные премудрости IT

И как вы понимаете, в таком случае не столь важно в каком формате книжка, и есть ли в ней полнотекстовый поиск
:mrgreen:
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Re: Основы работы с БД

Сообщение Troublemaker » 30.04.2008 15:21:08

alexs писал(а):полнотекстовый поиск в SQL БД обычно реализуется простешим sql оператором like

Э-э, а каким боком sql БД соотносится с форматом djvu?
shade писал(а):И как вы понимаете, в таком случае не столь важно в каком формате книжка, и есть ли в ней полнотекстовый поиск

Спорный вопрос. Лично мне трудновато запрефетчить полторы тыщи страниц мануала по тому же дельфи :) И искать по тексту "tmemdataset" несколько проще, чем мотать отсканированные страницы в djvu, рискуя просто проглядеть нужное "замыленным" глазом.
Аватара пользователя
Troublemaker
постоялец
 
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток

Re: Основы работы с БД

Сообщение Vadim » 30.04.2008 15:27:57

Troublemaker писал(а):Я оговорился: навигатору нужен dataSOURCE

Это ничего страшного. Главное не вставлять данные через DataSource.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Основы работы с БД

Сообщение alexs » 30.04.2008 15:33:25

Я подразумевал хранение текстовой информации в БД
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Основы работы с БД

Сообщение Vadim » 30.04.2008 15:34:32

Troublemaker писал(а):Спорный вопрос. Лично мне трудновато запрефетчить полторы тыщи страниц мануала по тому же дельфи

Ещё более спорный вопрос - найти такую книгу, чтобы в ней глава о базах данных занимала полторы тыщи страниц. А TMemDataset явно относится к главе о базах данных. :)
Как хочешь, но читать всё равно надо всё подряд. От того что ты выудишь в книге то место, где написано слово TMemDataset голова лучше варить не станет, т.к. работа с рекомым TMemDataset'ом строится на основе работы с обычным DataSet'ом, а ты это место в книге благополучно прошляпил с помощью Ctrl+F... :)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Основы работы с БД

Сообщение shade » 30.04.2008 16:03:56

Спорный вопрос. Лично мне трудновато запрефетчить полторы тыщи страниц мануала по тому же дельфи :) И искать по тексту "tmemdataset" несколько проще, чем мотать отсканированные страницы в djvu, рискуя просто проглядеть нужное "замыленным" глазом.

Лучше один раз запрефетчить, чем всю жизнь мучаться самому и мучать народ теми вопросами, которые можно легко узнать из книги.

Ещё более спорный вопрос - найти такую книгу, чтобы в ней глава о базах данных занимала полторы тыщи страниц.

+1
Даже сама книга по Delphi обычно не более 500 страниц, из которых наболее существенная часть умещается на 100-200 страниц, которые можно осилить за пару вечеров. Остальное COM, DCOM и тому прочая лабуда, которая нужна далеко не всем.

Знание должно быть комплексным, а не обывочным :roll:
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Re: Основы работы с БД

Сообщение Troublemaker » 04.05.2008 08:33:17

Роюсь в учебниках и т.п., но никак не могу понять простую, вроде бы, вещь: что, собственно, есть dataset? Это - одна таблица данных или набор из нескольких таблиц? Если из нескольких, то почему createtable не имеет параметров?

Второй момент касается dbgrid-a. Как Vadim писал здесь, я создаю memds.

Код: Выделить всё
  DS1.DataSet:=nil; //ибо не фиг прямо сейчас!
  MDS:=TMemDataset.Create(MDSForm);
  mds.FieldDefs.Add('Bool',ftBoolean);
  mds.FieldDefs.Add('Stri',ftString,20);
  mds.FieldDefs.Add('Inte',ftInteger);
  mds.CreateTable; //вот сколько может быть таких createtable?
  mds.Open;
  b:=mds.FieldCount;
//Заголовки полей
  for a:=0 to b-1 do begin //бегин остался, т.к. выполняются еще несколько несущественных действий
   mds.Fields[a].DisplayLabel:=concat('Поле №',IntToStr(a));
  end;
//Заливаем 20 записей
  for a:=1 to 20 do begin
   mds.Append;
   if random()>0.45 then bol:=true else bol:=false;
   mds.SetFields([bol,BoolToStr(bol),mds.DataSize]);
   mds.Post;
  end;
//Всем data-aware контролам назначаем соответствующий датасорс
  DS1.DataSet:=MDS;
  DBCheckBox1.DataSource:=DS1;
  DBGrid1.DataSource:=DS1;
  NAV1.DataSource:=DS1; //навигатор
  tfield(DBCheckBox1.Field):=mds.Fields.Fields[0];
//  DataField:=mds.Fields[0].FieldName;
  DBCheckBox1.ReadOnly:=true;
//для логических полей значения Value(Un)Checked игнорируются
  TColumn(DBGrid1.Columns[0]).ValueChecked:='true,-1';
  TColumn(DBGrid1.Columns[0]).ValueUnchecked:='false,0';
  DBGrid1.Refresh;


Всё неплохо - строковые и числовые поля показываются и редактируются "На ура", но почему же все чекбоксы в гриде выглядят unchecked, хотя содержимое булевого поля точно меняется, что показывает DBCheckBox1?
Есть идеи?
Аватара пользователя
Troublemaker
постоялец
 
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток

Re: Основы работы с БД

Сообщение m_guest » 04.05.2008 11:27:51

Свойства ValueChecked/ValueUnchecked грида устанавливали?
m_guest
постоялец
 
Сообщения: 193
Зарегистрирован: 14.08.2005 15:10:21

Re: Основы работы с БД

Сообщение Troublemaker » 04.05.2008 12:25:56

m_guest писал(а):ValueChecked/ValueUnchecked грида устанавливали?

см. выше в коде:
Troublemaker писал(а):TColumn(DBGrid1.Columns[0]).ValueChecked:='true,-1';
TColumn(DBGrid1.Columns[0]).ValueUnchecked:='false,0';
До этого было:
Troublemaker писал(а):TColumn(DBGrid1.Columns[0]).ValueChecked:='-1';
TColumn(DBGrid1.Columns[0]).ValueUnchecked:='0';

Меня здорово смущает, что это свойство типа string...
Аватара пользователя
Troublemaker
постоялец
 
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток

Re: Основы работы с БД

Сообщение m_guest » 04.05.2008 14:55:07

Почему смущает?..
Попробуйте оставить true/false
(Какие значения принимает у Вас логическое поле?)
m_guest
постоялец
 
Сообщения: 193
Зарегистрирован: 14.08.2005 15:10:21

Re: Основы работы с БД

Сообщение Troublemaker » 04.05.2008 15:11:54

m_guest писал(а):Почему смущает?
Потому что string и boolean - несколько разные типы данных.

m_guest писал(а):Какие значения принимает у Вас логическое поле?
Troublemaker писал(а): if random()>0.45 then bol:=true else bol:=false;
mds.SetFields([bol,BoolToStr(bol),mds.DataSize]);

И если верить Лазарю, то:
bol:=true
bol.AsString='true'
bol.AsInteger=-1

Но я не знаю, с какой "версией" значения сравниваются свойства Value(Un)Checked. Вроде бы со строковой, если верить тому, что свойство задается как строка возможных вариантов, но в каком виде передается эта строка? То есть, идет сравнение grid.ValueUnChecked с boolean.AsString или с boolean.AsInteger или с чем-то еще?

Еще смутил неожиданно выяснившийся момент: (хелп по D7)

TField does not support integer values, and raises an exception when an attempt is made to get or set the AsInteger property - TField не поддерживает целочисленные значения и приводит к возникновению исключительной ситуации (эксепшна) при попытке ЧТЕНИЯ или ЗАПИСИ свойства AsInteger.

Выяснилось это, когда я попробовал прочесть значение булева поля AsInteger. Для true получил -1. Нормально. А когда попробовал записать исправленное значение обратно, то получил тот самый эксепшн.
Аватара пользователя
Troublemaker
постоялец
 
Сообщения: 292
Зарегистрирован: 16.04.2008 13:00:44
Откуда: Биробиджан, Дальний Восток

Re: Основы работы с БД

Сообщение alexs » 04.05.2008 15:23:52

Зачем к логическому полю обращаешся как к целому?
bool.AsBoolean:=true;
bool.AsBoolean:=false;
А в гриде пустые - потому что все поля могу принимать значение "пусто"
т.е. bool.Clear;
это и не истина и не ложь.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Основы работы с БД

Сообщение m_guest » 04.05.2008 15:28:30

Troublemaker писал(а):Потому что string и boolean - несколько разные типы данных.

К примеру, я в Firebird могу представить значение логического поля как 'T' и 'F', и соответственно, "логическое" поле у меня будет типа Char(1)..
И соответственно, выставлю Value/Un/Checked в гриде
m_guest
постоялец
 
Сообщения: 193
Зарегистрирован: 14.08.2005 15:10:21

Re: Основы работы с БД

Сообщение alexs » 04.05.2008 15:36:23

Troublemaker писал(а):Меня здорово смущает, что это свойство типа string...

Это нормально. Просто не во всех БД есть настоящие логические типы. Например в FireBird пока нет :( . Хотя обещают. Поэтому логические типы выражаются через другие элементарные - например целочисленный или символьный. Вот именно для этого и ввели Valuecheked /ValueUnhecked свойтсво строкового типа - ведь через строку можно выразить практически любой элементарный тип данных.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Пред.След.

Вернуться в Потрепаться

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 1

Рейтинг@Mail.ru