![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
![]() Возникла необходимость перенести информацию из Paradox BD
в MySQL BD. Для работы с MySQL пользуюсь ZEOS 7.0.0 Как сделал я: Базаданных Paradox BD 7 создана была по умолчанию в 'ascii' ANSI кодировке Код:
Table1.Active:=false; Table1.TableName:='DB_Main.DB'; Table1.Active:=true; Table1.First; Memo1.Lines.ADD('Поле1'+#9+'Поле2'+#9+'Поле3'+#9+'Поле4') while not Table1.EOF do begin Memo1.Lines.ADD(Table1.FieldByName('Поле1').asstring+#9); Memo1.Lines.ADD(Table1.FieldByName('Поле2').asstring+#9); Memo1.Lines.ADD(Table1.FieldByName('Поле3').asstring+#9); Memo1.Lines.ADD(Table1.FieldByName('Поле4').asstring); Table1.Next; end; Memo1.Lines.SaveToFile('C:\DB.txt'); дальше в Navicat(MySQl Navigator) выбрал нужную мне БД и Импортировал всроенным мастером информацию в кодировке cp1251. В свойствах: ZConnection в Properties добавил следующее: Код:
codepage=cp1251 В результате в двух DBGrid получил идентичные таблицы в разных технологиях ![]() вопрос остаётся открытым, для переноса информации из БД в БД необходимо использовать прогонку по БД, или всё-таки юзать SQL запросы. Последний раз редактировалось Uniq!, 30.09.2010 в 16:18. |
#2
|
||||
|
||||
![]() Если вы подключите и парадокс и мускул например через BDE, то используя гетерогенные запросы это можно делать, а вот если два драйвера разные, то ваш способ более простой.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
![]() Ну, с некоторыми ограничениями, можно сделать и через разные драйвера.
Код:
procedure MoveData(QFrom, QTo : TQuery); // обобщенные параметры var I : Integer; begin QFrom.First; While Not QFrom.EOF Do Begin QTo.Append; For I := 0 To QFrom.Fields.Count-1 Do QTo.FieldByName(QFrom.Fields[i].FieldName).Value := QFrom.Fields[i].Value; QTo.Post; QFrom.Next; End; end; |
#4
|
||||
|
||||
![]() Ну я бы не назвал такой способ
Цитата:
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
||||
|
||||
![]() Ну с точки зрения циклических переборов и драйверов я всё сделал правильно. Во многом разобрался. 6ть баз отправилось в Table'цы ,без потерь.
Еду Дальше. ОТ циклов надо переходить к SQL-запросам. Но логики пока не хватает. Исходные данные: Cтруктура: Первый столбик таблицы - Артикулы(уникальные) Структура 4буквы+4цифры. (АААА0001) Пользователь вводит только буквы, а прога просчитывает номер артикула сама. У меня алгоритм такой: 1)Фильтрую базу по первым 4ём буквам остаётся например АААА0001 АААА0002 АААА0003 Надо добавить АААА0004 2)Спускаюсь к последнему полю(АААА0003), (маленький алгоритмик по получению строки 'АААА0004': копирую последние 4ре('0003') -> в int -> +1 -> в '0004' -> 'АААА0004'); 3) Добавляю запись путём ZQuery1.FieldByName... Вопрос: Как используя SQL запрос, добавляли бы вы новую запись? Последний раз редактировалось Uniq!, 01.10.2010 в 02:09. |
#6
|
|||
|
|||
![]() Я бы в этом случае разделил бы артикул на 2 поля - буквы отдельно, цифры отдельно. Возможно...
|