Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
 Аватар для yurembo
10 / 10 / 5
Регистрация: 04.07.2009
Сообщений: 112

Перенос данных из таблицы типа Paradox в таблицу типа Firebird

14.12.2010, 03:24. Показов 2759. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте! Возникла проблема при переносе данных из таблицы типа Paradox в таблицу типа Firebird... Вот например в Парадоксе есть таблица PC_Firms.DB, у нее есть поле Firm..
В Firebird есть таблица TB_FIRM, у нее есть поле TB_FIRMNAME..
Нужно чтоб все данные поля Firm копировались в поле TB_FIRMNAME... Вот код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
procedure TForm1.BitBtn2Click(Sender: TObject);
var st,fName:string;
rw:integer;
begin
 
         DataModule1.Table1.First; // Firm (Paradox)
with DataModule1.Table1 do
  begin          
 rw:=0;
   while not EOF do  
    begin
     rw:=rw+1;  
     fName:=FieldByName('Firm').AsString;  // с таблици Firm (Paradox)
       Next;
      DataModule1.IBQuery1.Close;
      DataModule1.IBQuery1.SQL.Clear;
  st:='INSERT INTO TB_FIRM(TB_FIRMNAME)';
  st:=st+' VALUES(:TB_FIRMNAME)';
      DataModule1.IBQuery1.SQL.Add(st); // в таблицу  tb_Firm (Firebird)
  DataModule1.IBQuery1.ParamByName('TB_FIRMNAME').AsString:=fName;
    DataModule1.IBQuery1.ExecSQL;
    DataModule1.IBQuery1.Close;
      DataModule1.IBQuery1.SQL.Clear;
       DataModule1.IBQuery1.SQL.Add('SELECT * FROM TB_FIRM ORDER By TB_FIRM_ID');
     DataModule1.IBQuery1.Open;
   end;
  end;  // with
end;
При нажатии на кнопку программа полностю зависает... В чем может быть проблема?

Добавлено через 2 часа 42 минуты
Такой же вариант, с другими таблицами но чуть иначе и все ровно зависает:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
procedure TForm1.BitBtn2Click(Sender: TObject);
var st,fSName,fName,fMName,ffirm,fprice,ftown,ftax,fdis,fprodt,fprodn:string;
rw:integer;
begin
rw:=0;
 
DataModule1.Table1.First;
with DataModule1.Table1 do
  begin
 
   while not EOF do
    begin
     rw:=rw+1;
      fSName:=FieldByName('Surname').Text;
      fMName:=FieldByName('Middle_name').Text;
      fName :=FieldByName('Name').Text;
      ffirm :=FieldByName('Firm').Text;
      fprice:=FieldByName('Price').Text;
      ftown :=FieldByName('Town').Text;
      fprodt:=FieldByName('Product_Type').Text;
      fprodn:=FieldByName('Product_Name').Text;
       Next;
      DataModule1.IBQuery1.Close;
      DataModule1.IBQuery1.SQL.Clear;
      DataModule1.IBQuery1.SQL.Add('INSERT INTO TB_CLIENTS (C_SURNAME,C_NAME,C_MIDDLENAME,C_FIRM,C_PRICE,C_TOWN,C_PRODUCTTYPE,C_PRODNAME)  VALUES'); // додавання запису в таблицю  tb_Firm (Firebird)
      DataModule1.IBQuery1.SQL.Add('(:C_SURNAME, :C_NAME, :C_MIDDLENAME, :C_FIRM, :C_PRICE, :C_TOWN, :C_PRODUCTTYPE, :C_PRODNAME);');
 
      DataModule1.IBQuery1.Params.ParseSQL(DataModule1.IBQuery1.SQL.Text, True);
  DataModule1.IBQuery1.ParamByName('C_SURNAME').Value:=fSName;
  DataModule1.IBQuery1.ParamByName('C_NAME').Value:=fName;
  DataModule1.IBQuery1.ParamByName('C_MIDDLENAME').Value:=fMName;
  DataModule1.IBQuery1.ParamByName('C_FIRM').Value:=ffirm;
  DataModule1.IBQuery1.ParamByName('C_PRICE').Value:=StrToFloat(fprice);
  DataModule1.IBQuery1.ParamByName('C_TOWN').Value:=ftown;
  DataModule1.IBQuery1.ParamByName('C_PRODUCTTYPE').Value:=fprodt;
  DataModule1.IBQuery1.ParamByName('C_PRODNAME').Value:=fprodn;
   try
    DataModule1.IBQuery1.ExecSQL;
   except
    ShowMessage('Добавление данных не удалось');
    DataModule1.IBTransaction1.RollbackRetaining;
    exit;
  end;
  DataModule1.IBTransaction1.CommitRetaining;
    DataModule1.IBQuery1.Close;
      DataModule1.IBQuery1.SQL.Clear;
       DataModule1.IBQuery1.SQL.Add('SELECT * FROM TB_CLIENTS ORDER By TB_ID');
     DataModule1.IBQuery1.Open;
   end;
  end;
end;
причем отловил пошагово что зависает именно тут:
Delphi
1
DataModule1.IBQuery1.ExecSQL;
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.12.2010, 03:24
Ответы с готовыми решениями:

Перенос данных из переменной одного типа в переменную другого типа
Добрый день! Одна часть программы размещает полученные данные(символы) в ПЕРЕМ1 типа ustring ( или string variant WideString), другие...

Firebird 2.1.Перенос данных из одной таблицы в другую.
Всем привет! Firebird 2.1. Есть две таблицы с одинаковой структурой. Нужно в рантайме перенести из одной таблицы в другую записи,...

Перенос значения переменной типа Real в переменную типа Integer
Как сделать так чтобы переменная типа integer приняло число которое было в переменной типа real???

4
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
14.12.2010, 06:08
1. Посмотри парметры транзакции DataModule1.IBTransaction1. Если устанвлен wait, то возможно у тебя конфликт при редактировании записи а режим wait заставляет ждать завершения конфликта. Если это так, поставь nowait
2. Никогда не используй RollbackRetaining. Это плохой тон.
3. CommitRetaining я бы тоже не советовал использовать, но это не так вредно.
4. Почитай про длиные и короткие транзакции. Это нужно знать!
1
 Аватар для yurembo
10 / 10 / 5
Регистрация: 04.07.2009
Сообщений: 112
14.12.2010, 14:56  [ТС]
Цитата Сообщение от SAMZ Посмотреть сообщение
1. Посмотри парметры транзакции DataModule1.IBTransaction1. Если устанвлен wait, то возможно у тебя конфликт при редактировании записи а режим wait заставляет ждать завершения конфликта. Если это так, поставь nowait
вот в чем была проблема!) Спасибо!

А как сбросить счетчик(ключевое поле ID), ато при каждом заполнении заново таблицы он у меня продолжает с той цыфры на которой остановился...
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
14.12.2010, 15:29
А как сбросить счетчик(ключевое поле ID),
В FB счетчики работают на основе генераторов (последовательностей). Найди нужный генератор и сбрось
1
 Аватар для yurembo
10 / 10 / 5
Регистрация: 04.07.2009
Сообщений: 112
14.12.2010, 16:09  [ТС]
Цитата Сообщение от SAMZ Посмотреть сообщение
В FB счетчики работают на основе генераторов (последовательностей). Найди нужный генератор и сбрось
Точно, так и сделал) спс)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.12.2010, 16:09
Помогаю со студенческими работами здесь

Delphi не видит поле в базе данных firebird 2.5 Dialect 3 типа varchar [1:50] массивное
Exception class EDatabaseError with message 'IBQuery1: Field 'OPISAN' not found'. Выдаёт мне ошибку после компиляции при обработке...

Перенос данных из таблицы в таблицу
Как при нажатии на кнопку перезаписать данные из таблицы ПРЕДЛОЖЕНИЯ ПО ПРОДАЖАМ в КВАРТИРЫ Меню -> Посмотреть список предложений...

Перенос данных из таблицы в таблицу
Добрый день вечер ночь всем! Подскажите пожалуйста как решить задачку. Нужно в базе перекинуть данные из одной таблицы в другую,...

Перенос данных из таблицы в таблицу
Уважаемые Гуру помогите пожалуйста реализовать функцию переноса данных из одной таблицы в другую. Исходные данные такие имеются 2...

Перенос данных из таблицы в таблицу
например: у меня имеется таблица1(Список) и таблица2(Отчет о выдачи) мне нужно сделать так чтобы можно было выбрать какую нибудь запись из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru