Простые операции C БД

Тема в разделе "Delphi - Базы данных", создана пользователем vital, 3 дек 2007.

  1. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    Есть 2 одинаовых таблицы, различаются лишь по содержащимся данным. Так вот, нужно удалить строку из первой и добавить её во вторую. И хм.. Без SQL(лажа блин!) . Paradox,BDE. Я бд не особо люблю и пользую не часто. Торможу вот..
     
  2. Azrael

    Azrael Гость

    Для: vital читайте про "навигационный подход", используйте методы объекта TTable: First, Next, Insert, Post, ну и Delete, конечно))
     
  3. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: Azrael
    Оно то понято, тут главо разобраться с ЧЕМ собствено надо работаь
     
  4. Azrael

    Azrael Гость

    Для: vital
    Для: Morpheus
    раз BDE, значит типичная связка компонентов TTable - TDataSource - визуальный контрол. можно, но не обязательно TDatabase ещё. TTable имеет внутренний указатель на текущую запись, если not(table.eof), значит её можно удалять, редактировать, перемещаться на следуюущую и предыдущую, в чем собственно и заключается навигационный подход.
     
  5. Azrael

    Azrael Гость

    Для: sax_ol
    Таварыщ хотел без SQL...
     
  6. root

    root Гость

    Для: vital
    Как бы это на sql-сервере хороше легло :)))))
    может комунибудь пригодится
    Код (Text):
    drop table #tmpT
    select * into #tmpT from table1 where id='wwww'
    delete from table1 where id='wwww'
    insert into table2 select * from #TmpT
     
  7. Azrael

    Azrael Гость

    сомневаюсь, что в Paradox-е реализовано DDL :)
     
  8. root

    root Гость

    Для: sax_ol
    такое должно работать
    sql1
    Код (Text):
    Insert into table2 (id,name) select id,name from table1 where id='wwww'
    +
    второй
    sql2
    Код (Text):
    delete from table1 where id='wwww'
    +
    как обычно не для выборки пользуемся Query1.ExecSQL
     
  9. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    Блин, на SQL я и сам могу! Короче, на форме 2 TTable подключенным к двум таблицам. Что нужно я уже написал.. Блин, скорее всего я прсто туплю в 2 часа ночи, но напишите мне код в общем виде как переместить строку из 1 TTable во вторую..
     
  10. root

    root Гость

    Для: vital
    Вам же Azreal написал !
    Код (Text):
    Table1.Edit;
    Table1.First;
    while not(Table1.Eof) do
    begin
    if Table1.fieldbyname('id').AsString = 'wwww' then
    begin
    Table2.Append;
    Table2.filedbyname('id').AsString:=Table1.fieldbyname('id').AsString;
    Table2.post;
    Table1.Delete;
    end;
    end;
    Table1.Next;
    end;
    P.S не проверял но идея такая + тормоза будут нереальные если у вас в базе очень много записей :)
     
  11. LAW

    LAW Гость

    Про тормоза - это верно, будут.
    Нужно использовать индекс по полю 'id' и метод GotoKey()
    Поиск будет выглядеть примерно так:

    Код (Text):
    Table1.IndexName('id');
    Table1.SetKey();
    Table1.fieldbyname('id').AsString = 'wwww';
    Table1.GotoKey()
    Тем самым мы находим запись где в поле 'id' значение 'wwww'
    Ну а дальше перекладываем как в примере выше.

    Удачи.
     
Загрузка...

Поделиться этой страницей