powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Fox - Interbase
25 сообщений из 28, страница 1 из 2
Fox - Interbase
    #34916840
Kommunar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть загвоздка надо данные из фоксовских таблиц загнать в базу 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
Fox - Interbase
    #34917922
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нельзя использовать однобуквенные переменные в подобных случаях. Дело в том, что за некоторыми буквами закреплены соответсвующие рабочие области и это может привести к неоднозначности.

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

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

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

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

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

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

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

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


Все это хорошо. Спасибо. Но проблема остается проблемой. Помогите кто чем может...
...
Рейтинг: 0 / 0
Fox - Interbase
    #34918948
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
Fox - Interbase
    #34919326
Kommunar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Fox - Interbase
    #34919349
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KommunarДа читается все хорошо в обоих случаях.
Значит убери в своем коде
Код: plaintext
DO cpzero WITH 'e:\transp\transp\base\mnci02.dbf',  1251 
...
Рейтинг: 0 / 0
Fox - Interbase
    #34920696
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='рррррр' - русские буквы.
Что можете сказать по этому поводу?
...
Рейтинг: 0 / 0
Fox - Interbase
    #34920725
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 , 'абвгд')
...
Рейтинг: 0 / 0
Fox - Interbase
    #34920861
Kommunar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Fox - Interbase
    #34920971
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 драйвер поискать.
...
Рейтинг: 0 / 0
Fox - Interbase
    #34921801
Kommunar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Fox - Interbase
    #34921980
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kommunar...
Получил - 32
32 - пробел. А запись-то добавилась?

Мыслей больше нет. Пробуй менять ODBC-драйвер.
...
Рейтинг: 0 / 0
Fox - Interbase
    #34922007
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Fox - Interbase
    #34922059
Kommunar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ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
Fox - Interbase
    #34922161
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты вообще, хоть как-нибудь можешь записать в поле mnci02.name русские буквы? Не через ODBC, а как-нибудь напрямую?

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

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

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


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


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