Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Какая-то странная ошибка, при конвертации 
:(
    Опции темы
tishaishii
Дата 2.3.2007, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Пытаюсь перенести из таблицы Firebird 2.x в файлик VFP 2.4.
Значит, выбираю из FB:
Код
SELECT
    LIST_MARK, K_KLIENT, N_PAPKI, N_PAPKI AS "N_PAPKI_P",
    N_DOG, DISPETC, SPECMEN, VAR_OPL, VID_OPER, OPER, DOP_OPER,
    (SELECT COUNT(*) FROM LINKS WHERE PAPKA.N_PAPKI=LINKS.N_PAPKI) AS "COBJECT",
    (SELECT COUNT(*) FROM PAPKA AS "P2" WHERE PAPKA.K_KLIENT=P2.K_KLIENT) AS "PAPKI_KL",
    NULL AS "HIST_VAR", NULL AS "PROTOKOL_V", NULL AS "SUM_OTM", NULL AS "OLD_VAR",
    NET_NAME, NUM_OPER, NULL AS "PODBOR_WAR", DISP_STOP, SPECM_STOP, AGENT, PRICH_STOP,
    DATA_REG, DATA_KON, DATA_OPL, DATA_OBN, DATA_ZKR, DATA_STOP, DATA_MOD
FROM
    PAPKA
WHERE
    PAPKA.ID_BASE=3

Запрос работает отлично. Там, где префикс "DATA", столбцы имеют тип DATE и выдают её в формате "dd-mm-yyyy".
Вставляю в VFP:
Код

INSERT INTO PAPKA (
    LIST_MARK, K_KLIENT, N_PAPKI, N_PAPKI_P,
    N_DOG, DISPETC, SPECMEN, VAR_OPL, VID_OPER, OPER, DOP_OPER, COBJECT, PAPKI_KL,
    HIST_VAR, PROTOKOL_V, SUM_OTM, OLD_VAR, NET_NAME, NUM_OPER, PODBOR_WAR,
    DISP_STOP, SPECM_STOP, AGENT, PRICH_STOP,
    DATA_REG, DATA_KON, DATA_OPL, DATA_OBN, DATA_ZKR, DATA_STOP, DATA_MOD
) VALUES (
    ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
    {?}, {?}, {?}, {?}, {?}, {?}, {?}
)

с параметрами (они здесь показаны, разделённые табуляцией):
Код
\t01030456\t0105002179\t0105002179\t\t00\t00\t\tПРОДАЮ\t1 200 000руб.\t\t1\t1\t\t\t\t\t\t15\t\t\t\t00\t\t2007-02-11\t\t\t2007-02-11\t\t\t2007-02-11

Если параметр пуст, то я его заменяю не на NULL, а на пустую строчку.

Получаю:
Код
DBD::ODBC::st execute failed: [Microsoft][ODBC Visual FoxPro Driver]Data type mismatch. (SQL-22018)(DBD: st_execute/SQLExecute err=-1) at D:\E\home\www\realt\unexport\unexport.pl line 11.


Значит, вот файлик

Добавлено @ 19:42 
Я уже извёлся, какой параметр не совпадает по типу.
Вообще, может, как-то можно узнать подробнее о данной конкретной ошибке?
Использую драйвер Microsoft dBase VFP Driver (*.dbf).

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  PAPKA.zip 3,77 Kb
PM MAIL ICQ Skype   Вверх
Artiom
Дата 5.3.2007, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1031
Регистрация: 11.3.2003
Где: Минск\Баку

Репутация: 3
Всего: 17



Проверь какой формат даты установлен в FoxPro вполне возможно затык в этом. 


--------------------
Если тебя жизнь трахает, значит, ты ещё живой
PM MAIL ICQ   Вверх
tishaishii
Дата 5.3.2007, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Даты проверил, с ними - порядок.
Однако, пока ни какой дополнительной информации об ошибке узнать не могу.
PM MAIL ICQ Skype   Вверх
tishaishii
Дата 5.3.2007, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Вот такой косьяк:
Код
use DBI;

my$vfp=DBI->connect(<<'.');
dbi:ODBC:DRIVER=Microsoft dBase VFP Driver (*.dbf);
Deleted=Yes; Null=Yes; Collate=Machine; BackgroundFetch=Yes; Exclusive=No; SourceType=DBF;
SourceDB=D:\E\home\www\realt\unexport\;
.
$vfp->do(<<'.');
CREATE TABLE T1(
    ID INTEGER,
    CONT BLOB
)
.
my$sth=$vfp->prepare(<<'.');
INSERT INTO T1 (
    ID, CONT
) VALUES (
    ?, ?
)
.
$sth->execute('1', <<'.');
dslkfldsk
dsfl;sd;l
.
$sth->finish;
$vfp->disconnect;


Для тех, кто не разобрался.
создаю таблицу:
Код
CREATE TABLE T1(
    ID INTEGER,
    CONT BLOB
)

Запрос для вставки:
Код
INSERT INTO T1 (
    ID, CONT
) VALUES (
    ?, ?
)

Вставляю данные:
Код
'1', 'dslkfldsk\ndsfl;sd;l'


Происходит та же ошибка: Data type mismatch.
При чём пытался вставлять по-одиночке в каждое из полей - результат тот же.
Когда в DATE и CHARCTER вставляется без вопросов.

У меня 2 варианта:
1. ODBC VFP 6.1 от MS плохой;
2. Числа и блобы при вставке указываются как-то особо, вроде, как для даты {}

Добавлено @ 15:49 
Вставка 
Код
INSERT INTO T1 (
    ID
) VALUES (
    '210'
)

тоже не работает, во-всяком случае через ODBC.

Добавлено @ 16:03 
Драйвер от знаменитого Майкрософт Виндовс бай Амэриканского Билл Гэйтса файльшивит.
PM MAIL ICQ Skype   Вверх
tishaishii
Дата 5.3.2007, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Нешто нельзя сконвертировать '210' в 210?
PM MAIL ICQ Skype   Вверх
Cashey
Дата 5.3.2007, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 13
Всего: 60



Выкидывай по одному типу поля из запроса, пока ошибка не исчезнет. когда выяснишь на каком типе ругается можно будет думать дальше. Типа INTEGER в FoxPro 2,4 нету, по идеи он его должен конвертировть в тип NUMERIC, однако драйвер может и не делать этого.


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
tishaishii
Дата 5.3.2007, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Всё уже понятно.
Вобщем, 
Код
CREATE TABLE T1(
    ID INTEGER,
    CONT BLOB
)


Код
INSERT INTO T1 (
    ID, CONT
) VALUES (
'
sadksjkdjksajdsadsad
sadklsadlksa
sadlasld
'
)

Выдаёт ошибку.

Попытался вникнуть в VFP:
[code=sql]
Код
INSERT INTO T1 (
    ID, CONT
) VALUES (
TEXT
sadksjkdjksajdsadsad
sadklsadlksa
sadlasld
ENDTEXT
)


Синтаксис страдает.

Дайте кто-нибудь вариант вставки BLOB в таблицу.
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Foxpro/Clipper/Dbase"
MoLeX

Запрещается!

1. Публиковать ссылки для чисто рекламных целей.

2. Оффтопить, флеймить, говорить не культурно.

Пожалуйста, адекватно задавайте свой вопрос. Тема должна создаваться с названием характеризующем Вашу проблему.

Задавайте вопросы правильно - как спросите, так вам и ответят.

Разрешено!

Давать ссылки на статьи, обзоры, если это не нарушает первый пункт правил.

Задавая вопрос, давайте нужную информацию касающуюся Вашей проблемы. Этим вы ускорите полезные ответы.

P.S. Размещение рекламы будет строго наказываться!



Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MoLeX

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Foxpro/Clipper/Dbase | Следующая тема »


 




[ Время генерации скрипта: 0.0586 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.