![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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 поля - буквы отдельно, цифры отдельно. Возможно...
|
|
#7
|
||||
|
||||
|
комбинаций букв до 10... Т.е. АААА ББББ ВВВВ (вот такого 10)
Выделять в отдельную колонку: высока честь с точки зрения алгоритмики да... код убдет проще.Вот запрос который даст мне все АААА, где активным будет последний ![]() А теперь: как бы его быстро просчитать увеличив на 1 Select * FROM bd WHERE Article LIKE 'АААА%' ORDER BY Article DESC Последний раз редактировалось Uniq!, 01.10.2010 в 03:01. |