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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2011, 00:59   #1
yuran111
Пользователь
 
Регистрация: 28.03.2011
Сообщений: 33
По умолчанию из мемо в таблицу

Код:
 ADOTable1.Open;
 
          for k:=1 to mmo1.Lines.Count div 5+1  do
        for d:=0 to 4 do
 
               begin
               ADOTable1.Insert;
         ADOTable1.Fields[d].AsString := mmo1.Lines.Strings[k*5+d];
          ADOTable1.Post;
          end;
вот из мемо в таблицу данные хочу перегнать, но каждое поле добавит и смещается на новую запись, а как сделать чтоб 5 полей добавило в одну запись(одну строку таблицы), а потом перешло на новую запись?

загонял из мемо в грид, та индекс ячейки указыва и все красиво, а в таблицу не получается. подскажите пожалуйста как?
yuran111 вне форума Ответить с цитированием
Старый 16.06.2011, 01:21   #2
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

Определи колличесво строк в Мемо, потом циклом загони все строки в стринговую переменную, а потом вставляй в базу (главное что бы длина Мемо не превышала длану поля в БД)
Нет невыполнимых задач, всё дело времени...
D-mon вне форума Ответить с цитированием
Старый 16.06.2011, 01:50   #3
Gulik
Холост/Не замужем
Форумчанин
 
Аватар для Gulik
 
Регистрация: 13.11.2007
Сообщений: 283
По умолчанию

а DBMemo не подходит для этого?

Последний раз редактировалось Gulik; 16.06.2011 в 02:07.
Gulik вне форума Ответить с цитированием
Старый 16.06.2011, 18:05   #4
yuran111
Пользователь
 
Регистрация: 28.03.2011
Сообщений: 33
По умолчанию

вообщем думал это просто должно быть, я из html получаю таблицу где каждая строка такого вида

<td>284281</td>

<td> контакт </td>

<td>3</td>

<td>39550</td>

<td>Гомель</td>


</tr>

<tr>

<td>286367</td>

<td> Датчик </td>

<td> 10 </td>

<td>34760</td>

<td>Брест </td>

</tr>
<tr>
ну потом получаю строку потом ее в поле мемо, в грид, в файл csv - перегнал и в текстовый, но мне удобней и быстрей оказалось в акцессе, таблицу подключаю и базу через DAO, а как в ту таблицу это перегнать не знаю - подскажите - может прямо из html как-то?
yuran111 вне форума Ответить с цитированием
Старый 17.06.2011, 09:36   #5
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

Ну напиши парсер html страницы. Или возьми готовый. Точно через DAO? Давно уже не встречал. В основном ADO везде применяется.
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума Ответить с цитированием
Старый 12.07.2011, 05:48   #6
yuran111
Пользователь
 
Регистрация: 28.03.2011
Сообщений: 33
По умолчанию

284281

контакт

3

39550

Гомель

286367

датчик

6

34760

Брест

в таком виде в объекте мемо в проге вижу данные - они однотипные через пять строк, как их перегнать в таблицу акцесс, подключенную через ADO? в таблице 5 полей. надо первую строку в первое поле, вторую во второе..... пятую в пятое поле таблицы, потом шестую строку в первое поле, седьмую во второе и так далее. у меня циклом получается так, что как только записало в таблицу первое поле - происходит переход на новую запись и второе поле записывает уже в новую запись - получается "ступеньками". как бы сделать чтоб не переходило на новую запись в таблице акцесса, пока пять полей не заполнится? ну может понятно теперь?кто знает?
yuran111 вне форума Ответить с цитированием
Старый 12.07.2011, 08:21   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

хм, а мне казалось, что ответ очевиден...
значит так, общий подход такой.
Читаете построчно и формируете данные для записи (НЕ ДОБАВЛЯЕТЕ в таблицу, а только ПОДГОТАВЛИВАЕТЕ данные к вставке). Как это сделать - можно по разному. Можно в переменные сохранять. Я бы лично формировал строку SQL запроса (с Insert)...
на момент достижения значения последнего поля - записываете все накопленные данные в таблицу. повторяете цикл...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.07.2011, 09:13   #8
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Код:
n:=0;
while n<memo1.lines.count do begin
  ADO.Insert;
  ado.fieldbyname['field1'].asstring:=memo1.lines.string[n+0];
  ado.fieldbyname['field2'].asstring:=memo1.lines.string[n+1];
.....
  ado.post;
  n:=n+5; // и теоретически осталась проблема последней неполной группы (есть только 1,2,3,4 из пяти требуемых строк)
end;
Код:
for j:=0 to memo.linex.count div 5 do  begin // может быть надо +- что-то
............
  ado.fieldbyname['field1'].asstring:=memo1.lines.string[ j*5 +0 ];
  ado.fieldbyname['field2'].asstring:=memo1.lines.string[ j*5 +1 ];
................
end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 12.07.2011, 20:40   #9
yuran111
Пользователь
 
Регистрация: 28.03.2011
Сообщений: 33
По умолчанию

спасибо теперь понятно
а как это применить подскажите http://connectionstrings.com/html-table
как практически с сайта каког-нибудь этим таблицу вытянуть можете показать? отсюда например http://cat.konfiskat.by/catalog_hard.php
может проще все можно?
yuran111 вне форума Ответить с цитированием
Старый 13.07.2011, 15:15   #10
yuran111
Пользователь
 
Регистрация: 28.03.2011
Сообщений: 33
По умолчанию

Код:
ADOTable1.Open;

        
          for k:=1 to mmo1.lines.count div 4+1 do  begin 

ADOTable1.Insert;
  ADOTable1.fieldbyname('поле1').asstring:=mmo1.lines.strings[ k*4 +0 ];
  ADOTable1.fieldbyname('поле2').asstring:=mmo1.lines.strings[ k*4 +1 ];
  ADOTable1.fieldbyname('поле3').asstring:=mmo1.lines.strings[ k*4 +2 ];
  ADOTable1.fieldbyname('поле4').asstring:=mmo1.lines.strings[ k*4 +3 ];
  ADOTable1.Post;

end;
вот так красиво работает.
а как с последним вопросом, чтоб напрямую из таблицы сайта в таблицу базы данных скинуть? или там на сайте что-то не то?
yuran111 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
мемо bulldog5293 Работа с сетью в Delphi 3 13.07.2010 21:43
Запрос возвращает пустую таблицу, если один из подзаросов возвращает пустую таблицу ArtInt SQL, базы данных 9 12.05.2010 15:40
Как скопировать текст из мемо одной формы в мемо другой CraZZy RabbIt Общие вопросы Delphi 4 27.02.2009 00:01
Поиск в мемо-2 KVANTOM Общие вопросы Delphi 2 09.01.2009 12:21
мемо ben95 Общие вопросы Delphi 1 29.01.2008 10:10