Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> vbscript работа с файлом dbf foxpro 
:(
    Опции темы
Georg4
Дата 22.6.2009, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

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



ТАк в том то и дело, что смысл понятен, а вот как правильно записать эту строку на выполнение, вопрос!


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
Georg4
Дата 22.6.2009, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

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



более-менее вопрос со строкой решен.
Теперь вопрос встал другой. как правильно прописать изменения всех полей таблицы
Ключевое слово здесь, это ВСЕХ.
 alter не хавает звёздочку заместо названия колонки.
Поэтому я пытался в цикле это сообразить. Но почему-то не хочет.

Вся проблема в том, что при таком раскладе

Код

rst.Open "Select * from "+ basa_dbf, cnn
' MsgBox  rst.Fields.Count , vbInformation , CurrentBuild
   For i = 0 To rst.Fields.Count-1
s="ALTER TABLE "+ basa_dbf + " ALTER COLUMN" + rst.Fields(i).Name +  "NOT NULL"
cnn.Execute(s)
 Next
 rst.Close
    cnn.Close


выдается сообщение, что база должна быть открыта эксклюзивно
по идее вот эта строчка

rst.Open "Select * from "+ basa_dbf, cnn

она открывает базу, и alter сделать нельзя
а если её нет, то как узнать количество полей, чтобы по ним всем пройти циклом?

Это сообщение отредактировал(а) Georg4 - 22.6.2009, 15:31


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
Данкинг
Дата 22.6.2009, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(Georg4 @  22.6.2009,  15:29 Найти цитируемый пост)
выдается сообщение, что база должна быть открыта эксклюзивно

Правильно, я же об этом упоминал. smile 

Цитата(Georg4 @  22.6.2009,  15:29 Найти цитируемый пост)
по идее вот эта строчка

rst.Open "Select * from "+ basa_dbf, cnn

она открывает базу, и alter сделать нельзя

Ну да: эта строчка просто выбирает из таблицы поля, т.е. этот ResultSet представлет собой выборку из таблицы, а не саму таблицу.

Цитата(Georg4 @  22.6.2009,  15:29 Найти цитируемый пост)
а если её нет, то как узнать количество полей, чтобы по ним всем пройти циклом?

Открой, узнай поля, потом закрой. smile На Дельфи я делал бы примерно так.

Это сообщение отредактировал(а) Данкинг - 22.6.2009, 15:36


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Georg4
Дата 22.6.2009, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

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



Ты офигенный советчик.

Ты бы ещё сказал, как бы ты это сделал на ассемблере.
Если бы это надо было делать на дельфи, я бы пришел к тебе первому и спросил "о великий, что ты думаешь?" 
Но это реализовывается на языке указанном в заголовке.

И ежели не можешь помочь мне, то не пиши сюда лишнего текста, спасибо и так за то что в начале помог. Я уже пол дня листаю мсдн и поэтому злой, не раздражай, пожалуйста.


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
Данкинг
Дата 22.6.2009, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(Georg4 @  22.6.2009,  17:38 Найти цитируемый пост)
Ты офигенный советчик.

Рад, что тебе нравлюсь. smile 

Цитата(Georg4 @  22.6.2009,  17:38 Найти цитируемый пост)
Ты бы ещё сказал, как бы ты это сделал на ассемблере.

И на ассемблере тоже, наверное - суть от этого не меняется: открыть датасет, узнать инфу о полях, затем закрыть и уже выполнять запросы в эксклюзивном режиме. smile 

Цитата(Georg4 @  22.6.2009,  17:38 Найти цитируемый пост)
Но это реализовывается на языке указанном в заголовке.

Смотри мой предыдущий пост: я тебе не предлагаю написать на Дельфи, я говорю об общем алгоритме. smile И вообще: если не знаешь, как писать на VB, так пиши сразу на FoxPro: его же ты также не знаешь, как мы выяснили. smile 

Цитата(Georg4 @  22.6.2009,  17:38 Найти цитируемый пост)
И ежели не можешь помочь мне, то не пиши сюда лишнего текста, спасибо и так за то что в начале помог. 

Начало предложения противоречит его концу (и наоборот). smile 


Цитата(Georg4 @  22.6.2009,  17:38 Найти цитируемый пост)
поэтому злой, не раздражай, пожалуйста. 

Ну так это - прими настойку пустырника, пиона, валерианы... smile 




--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Georg4
Дата 22.6.2009, 20:28 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

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



А может тебя как злостного оффтопщика к стенке в чистом поле?  smile 

Алгоритм известен, реализация вызвала проблемы, и над этим я сейчас и работаю. И ежели конструктивы в вопросе реализации мне не найти тут, то будет тяжелее, но ничего невозможного нет.




--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
Данкинг
Дата 22.6.2009, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(Georg4 @  22.6.2009,  21:28 Найти цитируемый пост)
А может тебя как злостного оффтопщика к стенке в чистом поле?

Ежели найдёшь оффтоп в моих постах - тогда конечно. smile  А так - всё с тобой ясно, я из этой темы удаляюсь. smile Но пустырничка всё же попей. smile 

Это сообщение отредактировал(а) Данкинг - 22.6.2009, 21:21


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Georg4
Дата 23.6.2009, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 961
Регистрация: 2.11.2002

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



Что имеется на данный момент:
Код

Dim path_dbf:     path_dbf = "D:\"
Dim basa_dbf:     basa_dbf = "i_yegvas_uaf.pdm"

    Dim cnn:        Set cnn = WScript.CreateObject("ADODB.Connection")
    Dim rst:        Set rst = WScript.CreateObject("ADODB.Recordset")
   Dim i,s  
Dim x()   
    cnn.Open "Driver={Microsoft Visual FoxPro Driver};" & _
"SourceType=DBF;" & _
"SourceDB="+path_dbf+";" & _
"Exclusive=YES" 
  rst.Open "SELECT * FROM " + basa_dbf, cnn
ReDim x(rst.Fields.Count)
   For i = 0 To rst.Fields.Count-1
x(i)=rst.Fields(i).Name
   Next
rst.Close
    For i = 0 To UBound(x)-1
s="ALTER TABLE "+ basa_dbf + " ALTER COLUMN" + x(i) +  "NOT NULL"
cnn.Execute(s)
   Next
 cnn.Close


здесь пишет ошибку, что база должна быть открыта эксклюзивно, 
Вроде бы рекордсет закрыт, вроде бы ничего не мешает.
В чем проблема?

http://support.microsoft.com/kb/130659  ситуацию не прояснило

Это сообщение отредактировал(а) Akina - 23.6.2009, 16:19


--------------------
Никто и никогда не должен решать одну проблему дважды
PM MAIL ICQ   Вверх
Akina
Дата 23.6.2009, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

Репутация: 34
Всего: 454




Модератор: Сообщение скрыто.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

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

1. Публиковать ссылки на вскрытые компоненты

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

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


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

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


 




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


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

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