Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Access. Тип данных "поле MEMO", и работа с ним 
V
    Опции темы
neweraser
Дата 12.11.2009, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



я так понимаю это строковый тип данных, если я правильно понимаю - это очень даже хорошо smile
так вот как мне добавить в поле несколько строк?


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Данкинг
Дата 12.11.2009, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Если сразу добавить несколько строк, то можно сложить их в одну переменную через Chr(13), а эту переменную уже записать в поле как обычно.  smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
neweraser
Дата 12.11.2009, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



Данкинг, поясни подробней пожалуйста smile
я же как-то говорил, тупые вопросы буду задавать


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Данкинг
Дата 12.11.2009, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



neweraser, сейчас могу ошибиться, поскольку программа, в которой я использовал такой приём, на работе. Но суть такая:
Код

var
sss:string;
begin
sss:='Первая'+chr(13)+'Вторая'+chr(13)+'Третья'+chr(13)+'Строчки';
adotable.append;
adotable.Fieldvalues['pole']:=sss;
adotable.post;
end;

В общем, попробуй.

Это сообщение отредактировал(а) Данкинг - 12.11.2009, 23:39


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
neweraser
Дата 12.11.2009, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



получается то же самое, когда я пробовал вписывать вместо chr(13) #10 (сам не знаю что это, но на строчку другую переносит), в общем вот smile
user posted image


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Данкинг
Дата 13.11.2009, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



А если chr(13)+chr(10) или наоборот chr(10)+chr(13) ?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
neweraser
Дата 13.11.2009, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



тогда вместо одной палочки появляется 2  smile

Добавлено через 4 минуты и 33 секунды
кстати, я добавляю так
Код

var
  sss: String;
begin
  DataModule1.ObjTable.Edit;
  sss:= 'Первая'+chr(10)+chr(13)+'Вторая'+chr(13)+'Третья'+chr(13)+'Строчки';
  DataModule1.ObjTable.FieldByName('ObjEmpl').AsString:= sss;
  ListBox1.Items.Add(DataModule1.ObjTableObjEmpl.AsString);

AsString здесь не мешает?


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Данкинг
Дата 13.11.2009, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



В общем, тогда начинается творчество:
Код

procedure TForm1.Button1Click(Sender: TObject);
var  sss:TStringList;
begin
sss:=TStringList.Create;
sss.Add('Первая');
sss.Add('Вторая');
sss.Add('Третья');
adotable1.Append;
adotable1.FieldValues['info']:=sss.Text;
adotable1.Post;
sss.Free;
end;

 smile  smile  smile 

Ну и считываем:
Код

procedure TForm1.Button2Click(Sender: TObject);
begin
 memo1.Lines.Add(adotable1.Fieldvalues['info']);
end;

 smile

Добавлено через 1 минуту и 23 секунды
Цитата(neweraser @  13.11.2009,  00:14 Найти цитируемый пост)
AsString здесь не мешает? 

Нет, это не должно мешать, но в любом случае, учти и "запасной" вариант с FieldValues (как у меня).

Это сообщение отредактировал(а) Данкинг - 13.11.2009, 00:35


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
neweraser
Дата 13.11.2009, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



Все работает, но только с мемо, а в листбох по прежнему вставляются палочки  smile

Добавлено через 3 минуты и 30 секунд
но в таблицу записывается правильно, может я не так вывожу? 
Код

ListBox1.Items.Add(DataModule1.ObjTable.Fieldvalues['ObjEmpl']);



--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Данкинг
Дата 13.11.2009, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(neweraser @  13.11.2009,  00:50 Найти цитируемый пост)
Все работает, но только с мемо, а в листбох по прежнему вставляются палочки

Тогда нужен супермегапарсер: smile smile smile

Код

function getwordnum(slovo,razd,nomer: string): string;
var i,c,int1,int2:integer;
res,ss:string;
begin
result:=slovo;
if (length(trim(slovo))=0) or (length(trim(razd))<>1)then exit;
slovo:=trim(razd)+trim(slovo)+trim(razd);
c:=0;
int1:=0;
int2:=0;
for i:=1 to length(slovo) do
 begin
  ss:=copy(slovo,i,1);
  if ss=razd then
    begin
     inc(c);
     if c=strtoint(nomer) then int1:=i;
     if c=strtoint(nomer)+1 then int2:=i;
    end;
 end;
result:=copy(slovo,int1+1,int2-int1-1);
end;

function occurs(sss,sss1:string):integer;
var j,c:integer;
begin
c:=0;
for j:=1 to length(sss) do if copy(sss,j,1)=sss1 then inc (c);
result:=c;
end;

procedure TForm1.Button1Click(Sender: TObject);
var vsego,j:integer;
ddd:string;
begin
ddd:=adotable1.fieldbyname('info').AsString;
vsego:=occurs(ddd,chr(10));
ddd:=stringreplace(ddd,chr(10),' ',[rfReplaceAll]);
ddd:=stringreplace(ddd,chr(13),'@',[rfReplaceAll]);
for j:=1 to vsego do
  listbox1.Items.Add(trim(getwordnum(ddd,'@',inttostr(j))));
end;


Добавлено через 1 минуту и 40 секунд
Цитата(neweraser @  13.11.2009,  00:50 Найти цитируемый пост)
но в таблицу записывается правильно, 

Видимо, просто нечитаемые символы не видны.

Это сообщение отредактировал(а) Данкинг - 13.11.2009, 01:04


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
neweraser
Дата 13.11.2009, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



ээммм... я сделал попроще 
Код

ListBox1.Items.Text:= (DataModule1.ObjTable.Fieldvalues['ObjEmpl']);

 smile 
но в любом случае спасибо smile


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Данкинг
Дата 13.11.2009, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(neweraser @  13.11.2009,  01:07 Найти цитируемый пост)
ээммм... я сделал попроще 

Учтём, что так можно. Но вообще когда мне пришлось выводить в/из Memo-поля подобное (в несколько строчек), то вроде не возникало проблем, правда, выводил я не в обычное Memo, а в Memo отчёта FastReport. 
Или же вот ещё так:
Код

for i:=0 to memo1.Items.Count-1 do
 begin
  ado1.Append;
  ado1.FieldValues ['info']:=memo1.Items.Strings [i];
  ado1.Post;
 end;


Кстати, про функцию getwordnum не забывай, она мне часто помогает. smile 



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
neweraser
Дата 13.11.2009, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



ну до FastReport мне еще далеко, я не знаю что это smile а про getwordnum почитаю  smile

Добавлено через 5 минут и 7 секунд
вспомнил, где-то я его уже использовал ))


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Данкинг
Дата 13.11.2009, 01:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(neweraser @  13.11.2009,  01:26 Найти цитируемый пост)
ну до FastReport мне еще далеко, я не знаю что это

Генератор отчётов. smile 

Цитата(neweraser @  13.11.2009,  01:26 Найти цитируемый пост)
а про getwordnum почитаю

Это моя самодельная функция. Название взято из FoxPro, где такая функция действительно существует и выделяет из строки "слово", ограниченное заданными знаками. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
neweraser
Дата 13.11.2009, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



Цитата(Данкинг @  13.11.2009,  01:49 Найти цитируемый пост)
Это моя самодельная функция

а я думал она готовая, в мсдн-е читал  smile теперь буду знать  smile 


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0672 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.