Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Fox - Interbase / 25 сообщений из 28, страница 1 из 2
05.11.2007, 16:02
    #34916840
Kommunar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
Есть загвоздка надо данные из фоксовских таблиц загнать в базу interbase, все хорошо за исключением символьных данных на русском языке, не хочет вставлять. Пишет что ошибка.
Текст программки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
SELECT  1 
USE e:\transp\transp\base\mnci02
DO cpzero WITH 'e:\transp\transp\base\mnci02.dbf',  1251 

SELECT * FROM e:\transp\transp\base\mnci02

DO WHILE !EOF()
a=VAL(k_tt)
b=VAL(k_ptt)
c=VAL(k_ntex)
d=ALLTRIM(name)
e=shpz
f=gr_os
g=ALLTRIM(user)
j=date
i=ALLTRIM(flag)
SQLEXEC(lnnewconnection,'insert into mnci02(k_tt,k_ptt,k_ntex,name,shpz,gr_os,userof,dateof,flag) values (?a,?b,?c,?d,?e,?f,?g,?j,?i)')

SQLCOMMIT(lnnewconnection)
SKIP 
ENDDO

И естественно не работает простая вставка инсертом, тоже с символьными полями на рууском языке.

Помогите кто чем может.....
...
Рейтинг: 0 / 0
06.11.2007, 10:52
    #34917922
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
Нельзя использовать однобуквенные переменные в подобных случаях. Дело в том, что за некоторыми буквами закреплены соответсвующие рабочие области и это может привести к неоднозначности.

Кроме того, CPZERO - не меняет содержимое файла. Она всего-лишь меняет признак в заголовке файла, указывая FoxPro в какой кодовой странице следует читать содержимое. Если же содержимое файла было сформировано в дургой кодовой странице, то Вы получите совершенно не читаемый текст.

Раз возникла необходимость устновить кодовую страницу, то, скорее всего, данный файл был создан в каком-либо DOS-приложении. А это означает, что, скорее всего, он был создан в кодовой странице 866.

В собственно FoxPro эта таблица отображается нормально?

Код: plaintext
1.
2.
USE ...
BROWSE
...
Рейтинг: 0 / 0
06.11.2007, 14:23
    #34918922
Kommunar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
ВладимирМНельзя использовать однобуквенные переменные в подобных случаях. Дело в том, что за некоторыми буквами закреплены соответсвующие рабочие области и это может привести к неоднозначности.

Кроме того, CPZERO - не меняет содержимое файла. Она всего-лишь меняет признак в заголовке файла, указывая FoxPro в какой кодовой странице следует читать содержимое. Если же содержимое файла было сформировано в дургой кодовой странице, то Вы получите совершенно не читаемый текст.

Раз возникла необходимость устновить кодовую страницу, то, скорее всего, данный файл был создан в каком-либо DOS-приложении. А это означает, что, скорее всего, он был создан в кодовой странице 866.

В собственно FoxPro эта таблица отображается нормально?

Код: plaintext
1.
2.
USE ...
BROWSE


Все это хорошо. Спасибо. Но проблема остается проблемой. Помогите кто чем может...
...
Рейтинг: 0 / 0
06.11.2007, 14:29
    #34918948
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
Kommunar ВладимирМ...
В собственно FoxPro эта таблица отображается нормально?

Код: plaintext
1.
2.
USE ...
BROWSE


Все это хорошо. Спасибо. Но проблема остается проблемой. Помогите кто чем может...
Тебе вообще-то вопрос по существу задали, с разъяснением причин. Что получается-то?


Код: plaintext
1.
USE e:\transp\transp\base\mnci02
BROW
Нормально читается?

Или так
Код: plaintext
1.
2.
USE e:\transp\transp\base\mnci02
DO cpzero WITH 'e:\transp\transp\base\mnci02.dbf',  866 
BROW
...
Рейтинг: 0 / 0
06.11.2007, 15:48
    #34919326
Kommunar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
Dima T Kommunar ВладимирМ...
В собственно FoxPro эта таблица отображается нормально?

Код: plaintext
1.
2.
USE ...
BROWSE


Все это хорошо. Спасибо. Но проблема остается проблемой. Помогите кто чем может...
Тебе вообще-то вопрос по существу задали, с разъяснением причин. Что получается-то?


Код: plaintext
1.
USE e:\transp\transp\base\mnci02
BROW
Нормально читается?

Или так
Код: plaintext
1.
2.
USE e:\transp\transp\base\mnci02
DO cpzero WITH 'e:\transp\transp\base\mnci02.dbf',  866 
BROW


Да читается все хорошо в обоих случаях.
...
Рейтинг: 0 / 0
06.11.2007, 15:52
    #34919349
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
KommunarДа читается все хорошо в обоих случаях.
Значит убери в своем коде
Код: plaintext
DO cpzero WITH 'e:\transp\transp\base\mnci02.dbf',  1251 
...
Рейтинг: 0 / 0
07.11.2007, 08:46
    #34920696
Kommunar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
Dima T KommunarДа читается все хорошо в обоих случаях.
Значит убери в своем коде
Код: plaintext
DO cpzero WITH 'e:\transp\transp\base\mnci02.dbf',  1251 

Ну незнаю мужики, может я чего то не понимаю, нофакт в том что эта падлюка не добавляет даже вот так:
a='рррррр'
SQLEXEC(lnnewconnection,"insert into mnci02(k_tt,k_ptt,k_ntex,name) values (1,2,1,?a)")
SQLCOMMIT(lnnewconnection)
Причем a='рррррр' - русские буквы.
Что можете сказать по этому поводу?
...
Рейтинг: 0 / 0
07.11.2007, 09:03
    #34920725
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
Kommunar Dima T KommunarДа читается все хорошо в обоих случаях.
Значит убери в своем коде
Код: plaintext
DO cpzero WITH 'e:\transp\transp\base\mnci02.dbf',  1251 

Ну незнаю мужики, может я чего то не понимаю, нофакт в том что эта падлюка не добавляет даже вот так:
a='рррррр'
SQLEXEC(lnnewconnection,"insert into mnci02(k_tt,k_ptt,k_ntex,name) values (1,2,1,?a)")
SQLCOMMIT(lnnewconnection)
Причем a='рррррр' - русские буквы.
Что можете сказать по этому поводу?
Начинай тогда с самого простого:
Код: plaintext
SQLEXEC(lnnewconnection,'insert into mnci02(k_tt,k_ptt,k_ntex,name) values (1,2,1,"абвгд")') 
1. Покрути настройки драйвера и/или сервера связанные с кодировкой.
2. Другими средствами русский текст в базу сохраняется? Если да, то как он после этого в фоксе отображается?
3. Разберись в какой кодировке сервер ждет и в ней подставляй:
Код: plaintext
a = cpconvert( 1251 ,  866 , 'абвгд')
...
Рейтинг: 0 / 0
07.11.2007, 09:57
    #34920861
Kommunar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
Dima T Kommunar Dima T KommunarДа читается все хорошо в обоих случаях.
Значит убери в своем коде
Код: plaintext
DO cpzero WITH 'e:\transp\transp\base\mnci02.dbf',  1251 

Ну незнаю мужики, может я чего то не понимаю, нофакт в том что эта падлюка не добавляет даже вот так:
a='рррррр'
SQLEXEC(lnnewconnection,"insert into mnci02(k_tt,k_ptt,k_ntex,name) values (1,2,1,?a)")
SQLCOMMIT(lnnewconnection)
Причем a='рррррр' - русские буквы.
Что можете сказать по этому поводу?
Начинай тогда с самого простого:
Код: plaintext
SQLEXEC(lnnewconnection,'insert into mnci02(k_tt,k_ptt,k_ntex,name) values (1,2,1,"абвгд")') 
1. Покрути настройки драйвера и/или сервера связанные с кодировкой.
2. Другими средствами русский текст в базу сохраняется? Если да, то как он после этого в фоксе отображается?
3. Разберись в какой кодировке сервер ждет и в ней подставляй:
Код: plaintext
a = cpconvert( 1251 ,  866 , 'абвгд')

Не знаю попробовал:
Код: plaintext
1.
2.
a=CPCONVERT( 866 , 1251 ,'аааааааа')
SQLEXEC(lnnewconnection,"insert into mnci02(k_tt,k_ptt,k_ntex,name) values (1,2,1,?a)") 
SQLCOMMIT(lnnewconnection)
не хочет.
Попробовал:
Код: plaintext
1.
SQLEXEC(lnnewconnection,"insert into mnci02(k_tt,k_ptt,k_ntex,name) values (1,2,1,'aaaaaaa')") 
SQLCOMMIT(lnnewconnection)
Тоже ничего хорошего.
Посмотрел настройки драйвера
character set - win1251
Скрипт создания базы данных и таблицы:
Код: plaintext
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.
SET SQL DIALECT  3 ;

/* CREATE DATABASE 'bu-3:d:\database\atp.gdb' PAGE_SIZE 8192

 DEFAULT CHARACTER SET WIN1251 */

/* Table: MNCI02, Owner: SYSDBA */

CREATE TABLE "MNCI02" 
(
  "K_TT"	INTEGER NOT NULL,
  "K_PTT"	INTEGER NOT NULL,
  "K_NTEX"	INTEGER NOT NULL,
  "NAME"	CHAR( 25 ) CHARACTER SET WIN1251,
  "SHPZ"	DOUBLE PRECISION,
  "GR_OS"	DOUBLE PRECISION,
  "USEROF"	CHAR( 5 ) CHARACTER SET WIN1251,
  "DATEOF"	DATE,
  "FLAG"	CHAR( 4 ) CHARACTER SET WIN1251
);


/* Grant Roles for this database */


/* Grant permissions for this database */
В sql котрый с сервером идет русский добавляется нормально.
Может какя нить виндовская настройка?
Что можете сказать по сложившейся ситуации?
...
Рейтинг: 0 / 0
07.11.2007, 10:29
    #34920971
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
Kommunar
Код: plaintext
a=CPCONVERT( 866 , 1251 ,'аааааааа')

Вот это чушь полная - ты берешь текст в кодировке 1251 (т.к. фокс использует ее), говоришь что считать его 866 и перевести в 1251. Вот что у тебя происходит:
Код символа 'a' в 1251 = 224
в 866 под кодом 224 символ 'p'
в 1251 код 'р' = 240
Итого CPCONVERT(866,1251,'а') = 'р'

вот так CPCONVERT(1251,866,'а') получим код символа 'a' в 866 кодировке = 160

функция ASC() возвращает код первого символа в строке.

выполни следующее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
close data all
SQLEXEC(lnnewconnection,"delete from mnci02") 
a='а'
SQLEXEC(lnnewconnection,"insert into mnci02(k_tt,k_ptt,k_ntex,name) values (1,2,1,?a)") 
SQLEXEC(lnnewconnection,"select * from mnci02", "MyCursor")
sele MyCursor
? asc(name) 
И сообщи что получилось. интересует asc(name)
Покажи как к базе подключение происходит.

PS Надо наверно другой ODBC драйвер поискать.
...
Рейтинг: 0 / 0
07.11.2007, 13:29
    #34921801
Kommunar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
Dima T Kommunar
Код: plaintext
a=CPCONVERT( 866 , 1251 ,'аааааааа')

Вот это чушь полная - ты берешь текст в кодировке 1251 (т.к. фокс использует ее), говоришь что считать его 866 и перевести в 1251. Вот что у тебя происходит:
Код символа 'a' в 1251 = 224
в 866 под кодом 224 символ 'p'
в 1251 код 'р' = 240
Итого CPCONVERT(866,1251,'а') = 'р'

вот так CPCONVERT(1251,866,'а') получим код символа 'a' в 866 кодировке = 160

функция ASC() возвращает код первого символа в строке.

выполни следующее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
close data all
SQLEXEC(lnnewconnection,"delete from mnci02") 
a='а'
SQLEXEC(lnnewconnection,"insert into mnci02(k_tt,k_ptt,k_ntex,name) values (1,2,1,?a)") 
SQLEXEC(lnnewconnection,"select * from mnci02", "MyCursor")
sele MyCursor
? asc(name) 
И сообщи что получилось. интересует asc(name)
Покажи как к базе подключение происходит.

PS Надо наверно другой ODBC драйвер поискать.
Получил - 32
...
Рейтинг: 0 / 0
07.11.2007, 14:09
    #34921980
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
Kommunar...
Получил - 32
32 - пробел. А запись-то добавилась?

Мыслей больше нет. Пробуй менять ODBC-драйвер.
...
Рейтинг: 0 / 0
07.11.2007, 14:15
    #34922007
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
1. Для тех, кто не понял, повторяю еще раз: НЕЛЬЗЯ использовать однобуквенные имена переменных. При определенных ситуациях это приводит к непредсказуемым последствиям.

2. SQLExec() возвращает некое значение. Кроме того, по AERROR() можно прочитать сообщение об ошибке, если таковое есть.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
LOCAL lcValue
lcValue = "абвг"

IF  0  > SQLEXEC(lnnewconnection,"insert into mnci02(k_tt,k_ptt,k_ntex,name) values (1,2,1,?lcValue)") 
	* Произошла ошибка. Уточняем в чем дело
	LOCAL laError( 1 )
	=AERROR(laError)
	MessageBox(laError[ 2 ])
ENDIF
...
Рейтинг: 0 / 0
07.11.2007, 14:26
    #34922059
Kommunar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
ВладимирМ1. Для тех, кто не понял, повторяю еще раз: НЕЛЬЗЯ использовать однобуквенные имена переменных. При определенных ситуациях это приводит к непредсказуемым последствиям.

2. SQLExec() возвращает некое значение. Кроме того, по AERROR() можно прочитать сообщение об ошибке, если таковое есть.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
LOCAL lcValue
lcValue = "абвг"

IF  0  > SQLEXEC(lnnewconnection,"insert into mnci02(k_tt,k_ptt,k_ntex,name) values (1,2,1,?lcValue)") 
	* Произошла ошибка. Уточняем в чем дело
	LOCAL laError( 1 )
	=AERROR(laError)
	MessageBox(laError[ 2 ])
ENDIF

Попробовал и так тоже не получается.
Текст ошибки:
Код: plaintext
1.
Connectivity error:
[easysoft][interbase ]arichmetic exception, numeric overflow, or string truncation, Cannot transliterate character between character sets
...
Рейтинг: 0 / 0
07.11.2007, 14:52
    #34922161
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
А ты вообще, хоть как-нибудь можешь записать в поле mnci02.name русские буквы? Не через ODBC, а как-нибудь напрямую?

Тебе же сообщение об ошибке ясно говорит, что не поддерживается трансляция символов. Это либо проблемы настройки драйвера ODBC, либо проблемы настройки InterBase. Возможно, настройки таблицы или поля. FoxPro тут вообще не при чем.
...
Рейтинг: 0 / 0
07.11.2007, 15:20
    #34922288
Kommunar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
ВладимирМА ты вообще, хоть как-нибудь можешь записать в поле mnci02.name русские буквы? Не через ODBC, а как-нибудь напрямую?

Тебе же сообщение об ошибке ясно говорит, что не поддерживается трансляция символов. Это либо проблемы настройки драйвера ODBC, либо проблемы настройки InterBase. Возможно, настройки таблицы или поля. FoxPro тут вообще не при чем.
Да могу через sql который с сервером идет. Нормально все заносит.
...
Рейтинг: 0 / 0
07.11.2007, 15:44
    #34922370
Kommunar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
Сейчас скачал другой драйвер - XTG Systems InterBase ODBC driver 1.0.15. Через этот вообще подключаться не хочет.
Народ а кто нить вообще фокс с interbase скрещать пытался????
Если да то каким образом или какими дровами пользовался???
...
Рейтинг: 0 / 0
07.11.2007, 15:58
    #34922457
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
KommunarСейчас скачал другой драйвер - XTG Systems InterBase ODBC driver 1.0.15. Через этот вообще подключаться не хочет.
Народ а кто нить вообще фокс с interbase скрещать пытался????
Если да то каким образом или какими дровами пользовался???

Поищи в форуме по словам interbase или firebird
обсуждалось подобное, ссылки были.


А Interbase по каким соображениям выбран? MS-SQL чем не устраивает? Фокс лучше всего под MS-SQL заточен.
...
Рейтинг: 0 / 0
07.11.2007, 16:02
    #34922485
Kommunar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
Dima T KommunarСейчас скачал другой драйвер - XTG Systems InterBase ODBC driver 1.0.15. Через этот вообще подключаться не хочет.
Народ а кто нить вообще фокс с interbase скрещать пытался????
Если да то каким образом или какими дровами пользовался???

Поищи в форуме по словам interbase или firebird
обсуждалось подобное, ссылки были.


А Interbase по каким соображениям выбран? MS-SQL чем не устраивает? Фокс лучше всего под MS-SQL заточен.
Я хотел MS поставить. Пробовал 2000 и 2005, не один не стал. 2005 помоему enterprise edition, не хочет на xp становиться. 2000 тоже не хочет почему не могу понять. Система XP SP2. Пишет шо система не нравиться. Других релизов пока не нашел.
Хотелось бы с интер - ом разобраться.
...
Рейтинг: 0 / 0
07.11.2007, 16:03
    #34922495
pitermax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
http://www.sql.ru/forum/actualthread.aspx?tid=102422&hl=interbase
А вобще поиск рулит тем по interbase тут навалом
...
Рейтинг: 0 / 0
07.11.2007, 16:05
    #34922503
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
И что помешало поставить Desktop Edition, идущий в поставке с фоксом? Или Express из поставки VS. Оба бесплатные и можно скачать с сайта мелкомягких.
...
Рейтинг: 0 / 0
07.11.2007, 16:23
    #34922634
Kommunar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
Sergey Sizov.И что помешало поставить Desktop Edition, идущий в поставке с фоксом? Или Express из поставки VS. Оба бесплатные и можно скачать с сайта мелкомягких.
не все так просто. Фокс ставил не я. А во вторых это завод который вечно на все зажимает денег.
Так что приходиться обходиться как есть.
...
Рейтинг: 0 / 0
07.11.2007, 17:09
    #34922908
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
А во вторых это завод который вечно на все зажимает денег.
Не понял. Я ж вроде бы по-русски написАл: бесплатные. При чем тут деньги и зажимистость?
...
Рейтинг: 0 / 0
08.11.2007, 08:34
    #34923828
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
Kommunar...
Я хотел MS поставить. Пробовал 2000 и 2005, не один не стал. 2005 помоему enterprise edition, не хочет на xp становиться. 2000 тоже не хочет почему не могу понять. Система XP SP2. Пишет шо система не нравиться. Других релизов пока не нашел.
Хотелось бы с интер - ом разобраться.
MS SQL 2005 Express edition - бесплатный, ставиться на XP, качается с сайта MS. Ограничения: использует 1 процессор, максимальный размер базы 4Гб.
...
Рейтинг: 0 / 0
08.11.2007, 15:32
    #34925474
Kommunar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox - Interbase
Dima T Kommunar...
Я хотел MS поставить. Пробовал 2000 и 2005, не один не стал. 2005 помоему enterprise edition, не хочет на xp становиться. 2000 тоже не хочет почему не могу понять. Система XP SP2. Пишет шо система не нравиться. Других релизов пока не нашел.
Хотелось бы с интер - ом разобраться.
MS SQL 2005 Express edition - бесплатный, ставиться на XP, качается с сайта MS. Ограничения: использует 1 процессор, максимальный размер базы 4Гб.
Вопрос наверно туповатый, но тем не менее:
может он работать как сетевой а не десктоп сервер?
сколько к нему могут подсоединиться пользователей?
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Fox - Interbase / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]