powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / dbf-файл
23 сообщений из 23, страница 1 из 1
dbf-файл
    #34976503
Kossva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер! Помогите, пожалуйста!
Можно ли в Cache обращаться к dbf-файлу при помощи SQL-запросов напрямую, через программу. Если можно то как?
...
Рейтинг: 0 / 0
dbf-файл
    #34976668
Peter Zarubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KossvaДобрый вечер! Помогите, пожалуйста!
Можно ли в Cache обращаться к dbf-файлу при помощи SQL-запросов напрямую, через программу. Если можно то как?

Код: 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.
// Создаем соединение
s Connection=##class(%SQLGatewayConnection).%New()
d Connection.Connect("TEST4","","") ; TEST4 - DSN настроенный на dbf-файл
s RS=##class(%ResultSet).%New("%DynamicQueryGW:SQLGW")
d RS.Prepare("SELECT * FROM test",,Connection)
s sc=RS.Execute()

If $SYSTEM.Status.IsError(sc) {
   Do $SYSTEM.Status.DisplayError(sc)
   d RS.Close()
   // разрыв соединения
   s sc=Connection.Disconnect()
   k Connection
   Q
}

 While (RS.Next()){
     W RS.GetDataByName("FieldName1"),!
 }

d RS.Close()
Set sc=Connection.Disconnect()
Q


...
Рейтинг: 0 / 0
dbf-файл
    #34976898
Kossva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное спасибо! Вы меня очень-очень выручили! Просто слов нет как я вам благодарна!
...
Рейтинг: 0 / 0
dbf-файл
    #34980837
Kossva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер! Недавно я спрашивала про sql-запросы dbf-файлу. Получила следующий ответ:
Peter Zarubin KossvaДобрый вечер! Помогите, пожалуйста!
Можно ли в Cache обращаться к dbf-файлу при помощи SQL-запросов напрямую, через программу. Если можно то как?

Код: 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.
// Создаем соединение
s Connection=##class(%SQLGatewayConnection).%New()
d Connection.Connect("TEST4","","") ; TEST4 - DSN настроенный на dbf-файл
s RS=##class(%ResultSet).%New("%DynamicQueryGW:SQLGW")
d RS.Prepare("SELECT * FROM test",,Connection)
s sc=RS.Execute()

If $SYSTEM.Status.IsError(sc) {
   Do $SYSTEM.Status.DisplayError(sc)
   d RS.Close()
   // разрыв соединения
   s sc=Connection.Disconnect()
   k Connection
   Q
}

 While (RS.Next()){
     W RS.GetDataByName("FieldName1"),!
 }

d RS.Close()
Set sc=Connection.Disconnect()
Q



Использую другие запросы, всё замечательно работает. Только DELETE не хочет удалять строку.
Не понимаю в чем проблема. Очень надеюсь на вашу подсказку. И еще INSERT не добавляет
текст на кириллице.
Заранее, Огромное Спасибо!
...
Рейтинг: 0 / 0
dbf-файл
    #34980973
Peter Zarubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KossvaДобрый вечер! Недавно я спрашивала про sql-запросы dbf-файлу. Получила следующий ответ:
Peter Zarubin KossvaДобрый вечер! Помогите, пожалуйста!
Можно ли в Cache обращаться к dbf-файлу при помощи SQL-запросов напрямую, через программу. Если можно то как?

Код: 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.
// Создаем соединение
s Connection=##class(%SQLGatewayConnection).%New()
d Connection.Connect("TEST4","","") ; TEST4 - DSN настроенный на dbf-файл
s RS=##class(%ResultSet).%New("%DynamicQueryGW:SQLGW")
d RS.Prepare("SELECT * FROM test",,Connection)
s sc=RS.Execute()

If $SYSTEM.Status.IsError(sc) {
   Do $SYSTEM.Status.DisplayError(sc)
   d RS.Close()
   // разрыв соединения
   s sc=Connection.Disconnect()
   k Connection
   Q
}

 While (RS.Next()){
     W RS.GetDataByName("FieldName1"),!
 }

d RS.Close()
Set sc=Connection.Disconnect()
Q



Использую другие запросы, всё замечательно работает. Только DELETE не хочет удалять строку.
Не понимаю в чем проблема. Очень надеюсь на вашу подсказку. И еще INSERT не добавляет
текст на кириллице.
Заранее, Огромное Спасибо!


Покажите код, который не работает
...
Рейтинг: 0 / 0
dbf-файл
    #34981098
Kossva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот, например:
s Connection=##class(%SQLGatewayConnection).%New()
d Connection.Connect("ARTTMP","","")
s RS=##class(%ResultSet).%New("%DynamicQueryGW:SQLGW")
d RS.Prepare("DELETE FROM ARTTMP WHERE KC =23",,Connection)
s sc=RS.Execute()

If $SYSTEM.Status.IsError(sc)
{
Do $SYSTEM.Status.DisplayError(sc)
d RS.Close()
s sc=Connection.Disconnect()
k Connection
Q
}

d RS.Close()
Set sc=Connection.Disconnect()
Q

Выдает:
ОШИБКА #6022: Шлюз: неудачное завершение Execute.
...
Рейтинг: 0 / 0
dbf-файл
    #34981156
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В панели управления в настройке ODBC на вкладке Трассировка включите трассировку
ODBC и посмотрите в протоколе трассировки, какие ошибки возникают при удалении.

=logist (Сергей Шутов)
ООО Димас, Хабаровск
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
dbf-файл
    #34981340
Kossva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
logist
В панели управления в настройке ODBC на вкладке Трассировка включите трассировку
ODBC и посмотрите в протоколе трассировки, какие ошибки возникают при удалении.

=logist (Сергей Шутов)
ООО Димас, Хабаровск
Posted via ActualForum NNTP Server 1.4
Протокол пуст...
...
Рейтинг: 0 / 0
dbf-файл
    #34984365
Kossva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как насчет добавления русско-язычного текста с помощью INSERT? В чем может быть ошибка?
...
Рейтинг: 0 / 0
dbf-файл
    #34986410
Peter Zarubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KossvaВот, например:
s Connection=##class(%SQLGatewayConnection).%New()
d Connection.Connect("ARTTMP","","")
s RS=##class(%ResultSet).%New("%DynamicQueryGW:SQLGW")
d RS.Prepare("DELETE FROM ARTTMP WHERE KC =23",,Connection)
s sc=RS.Execute()

If $SYSTEM.Status.IsError(sc)
{
Do $SYSTEM.Status.DisplayError(sc)
d RS.Close()
s sc=Connection.Disconnect()
k Connection
Q
}

d RS.Close()
Set sc=Connection.Disconnect()
Q

Выдает:
ОШИБКА #6022: Шлюз: неудачное завершение Execute.

А в DSN прописан полный доступ? Может быть только чтение?
...
Рейтинг: 0 / 0
dbf-файл
    #34986836
Kossva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Peter Zarubin
А в DSN прописан полный доступ? Может быть только чтение?
Вроде все разрешено, что можно. По крайней мере INSERT же работает.
Тут вообще интересно получается: Удаляешь строчку, потом, если dbf-файл сам открывать, например через Excel, то этой строчки не будет, а если задать запрос SELECT, то он ее видит.
Мистика какая-то...)
...
Рейтинг: 0 / 0
dbf-файл
    #34986847
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KossvaМистика какая-то...)
Наверное эта запись просто помечается как удаленная (так в dbf всегда было), физически ее удалит только DBFкоманда PACK...
Excel-то все это понимает! А вот select (Кащейский?) наверное нет...
...
Рейтинг: 0 / 0
dbf-файл
    #34986881
Kossva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsaНаверное эта запись просто помечается как удаленная (так в dbf всегда было), физически ее удалит только DBFкоманда PACK...
Excel-то все это понимает! А вот select (Кащейский?) наверное нет...
Ужас! Неужели не выхода?(
А Select - кащейский.
...
Рейтинг: 0 / 0
dbf-файл
    #34987174
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KossvaНеужели не выхода?(
Какие действия вы производите с dbf файлом?
KossvaSelect - кащейский.
Я так и думал
...
Рейтинг: 0 / 0
dbf-файл
    #34987208
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно... Если сделать
Код: plaintext
1.
2.
3.
select
*
from
<ваш_dbf>
Будут видны только "ваши" поля? Может select "видит" признак удаленной записи как поле?
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
dbf-файл
    #34987334
Kossva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsaИнтересно... Если сделать
Код: plaintext
1.
2.
3.
select
*
from
<ваш_dbf>
Будут видны только "ваши" поля? Может select "видит" признак удаленной записи как поле?
Все видит...
Может он видит удаленные записи по умолчанию и есть какой-то ключ, который отключает это свойство..?
...
Рейтинг: 0 / 0
dbf-файл
    #34987411
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kossva привет.

В свойствах ODBC соединения ткнуть Настройка, Параметры, снять флаг Показывать
удаленные строки.

Любви.
logist (Сергей Шутов)
ООО Димас, Хабаровск
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
dbf-файл
    #34987668
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оказывается ларчик просто открывался...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
dbf-файл
    #34988233
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>В свойствах ODBC соединения ткнуть Настройка, Параметры, снять флаг Показывать
удаленные строки.
Да, меня всегда удивляла эта дефолтная настройка.
А еще меня удивляют разнообразные глюки и приколы драверов ODBC.

То теряется часть строк, то начинать добивать поля пробелами, а уж сколько приколов с форматированием чисел в разных драйверах.
Для себя когда-то выбрал Microsoft dbase Driver, хотя с фоксовым dbf он глючит
...
Рейтинг: 0 / 0
dbf-файл
    #34989565
Kossva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
logist
В свойствах ODBC соединения ткнуть Настройка, Параметры, снять флаг Показывать
удаленные строки.
Наконец-то заработало! Спасибо большое!
Все параметры так чщательно замаскированы, что не найдешь)
Кстати, наверяка, вы знаете что и где надо нажать, чтобы INSERT стал добавлять символы из кириллицы...)
...
Рейтинг: 0 / 0
dbf-файл
    #34989895
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю, что тут придется вручную их кодировать перед отправкой.

Попробуйте отправлять

$zcvt("Привет","O","CP866")

или

$zcvt("Привет","O","UTF8")

Для чтения русских букв соответственно

$zcvt(Rs.GetData(1),"I","CP866")

Любви.
logist (Сергей Шутов)
ООО Димас, Хабаровск
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
dbf-файл
    #34991137
Kossva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
logist
Я думаю, что тут придется вручную их кодировать перед отправкой.

Попробуйте отправлять

$zcvt("Привет","O","CP866")

или

$zcvt("Привет","O","UTF8")


Да, теперь записывает, но в форме кракозябров, а надо бы по-русски...
...
Рейтинг: 0 / 0
dbf-файл
    #34991215
Kossva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ура!!! Получилось с CP1251!
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / dbf-файл
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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