Форум программистов, компьютерный форум, киберфорум
Наши страницы

Visual FoxPro

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.57
Alissia_Astorot
0 / 0 / 0
Регистрация: 13.06.2012
Сообщений: 9
#1

Проблемка с INSERT INTO - FoxPro

22.06.2012, 00:33. Просмотров 1885. Ответов 2
Метки нет (Все метки)

Код
block1=thisForm.combo1.Value
	section1=thisForm.combo2.Value
	element1=thisForm.combo3.Value
	content1=thisForm.edit1.Value
	data0=CTOD(thisform.edit2.Value)
	mark1=VAL(thisform.edit3.Value)
	comment1=thisform.edit4.Value
	INSERT INTO card (key_name, block, section, element, content, data, mark, comment);
	VALUES (ind, block1, section1, element1, content1, data0, mark1, comment1)
Постоянно ругается в этом месте на INSERT INTO, говоря, что File in use. Не могу понять, почему... В главной программе:

Код
CLOSE ALL

USE teaches.dbf
USE card.dbf          *та самая таблица
USE block.dbf
USE section.dbf
USE element.dbf
USE qualif.dbf
Более нигде она не юзается. Команд с данной таблицей тоже больше нигде нет, разве что в форме основной, откуда открывается эта формочка добавления. Там код на Activate:
Код
WITH ThisForm.Grid1
	.RecordSource = "Select key_card, Block, Section,;
	Element, Content, Data, Mark, Comment FROM card.dbf;
	WHERE key_name = ind INTO CURSOR duCursor1"
	ENDWITH
Я где-то чего-то не понимаю, да?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2012, 00:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проблемка с INSERT INTO (FoxPro):

Проблемка, или не достаточной знание мат. части? - Базы данных
если я в качестве аргумента функции указываю строку котроя содержит имя глобальной переменной, как мне потом взять значение этой переменной...

не работает INSERT INTO - Базы данных
Имеется таблица Table1, в которой определены 3 поля: Code, Time и Name, где Code - счетчик. Time - числовое. Name - строковое. Пишу...

Insert, update - Базы данных
нужно создать 3 кнопки в borland builder: создать запись, добавить, удалить с помощью insert, update...... кто знает помогите с чего...

Insert и Union - Базы данных
Кто знает, скажите пожалуйста - почему не работает? (б.д. PARADOX) insert into ":alias:Table1.db" select * from ":alias:Table2.db"...

INSERT и булевы значения - Базы данных
Как бы я не пытался вставить в таблицу булевы типы, постоянно получаю ошибку Invalid Parameter. Добавлено через 15 минут ...

Insert MD5 into table - Базы данных
Есть база, в ней таблица account, в которой поле password. Делаю персист сущности этой таблицы. Пароль в чистом виде. Где-то прочитал, что...

2
Redglow
105 / 105 / 1
Регистрация: 06.05.2011
Сообщений: 277
22.06.2012, 08:22 #2
Во-первых, стопиццот промежуточных переменных здесь не нужны. В инсерт легко можно использовать значения контролов напрямую.
Во-вторых, преобразования типов CTOD() и VAL() здесь тоже не нужны. Это работает довольно медленно и чем компактнее и понятнее код - тем лучше для его сопровождения. Всего-навсего в дизайн-тайм нужно открыть форму, в свойстве Edit2.Value вписать {}, а в Edit3.Value = 0 и эти значения этих контролов уже будут иметь типы даты и числового без преобразований. Кстати, почему Editbox? Для ввода даты и числа Textbox-a более, чем достаточно.
В итоге получаем код:
Код
WITH ThisForm
   INSERT INTO card (key_name, block, section, element, content, data, mark, comment);
      VALUES (ind, .Combo1.Value, .Combo2.Value, .Combo3.Value, .Edit1.Value, Edit2.Value, .Edit3.Value, .Edit4.Value)
ENDWITH
Кстати, если будете дальше заниматься программированием, рекомендую давать осмысленные имена контролам. Т.е. не Edit2 для даты, а текстбокс txtDate; не Combo1, а cboBlock; не кнопка Command1, а cmdSave и т.д.

Теперь об ошибке. Команда USE MyTable без параметров открывает таблицу в текущей рабочей области. Следующая команда открывает другую таблицу в ЭТОЙ ЖЕ рабочей области, т.е. закрыв предыдущую таблицу. Это можно представить себе как шкаф с пустыми полками. Необходимо разложить вещи по полкам, но вместо этого вы кладете вещь на первую полку, затем убираете и кладете на ее место другую и повторяете это до тех пор пока не закончатся вещи. Т.е. на момент добавления записи эта таблица не открыта программой, но судя по тексту ошибки, открыта где-то или чем-то еще. Проверьте, что эти файлы не открыты в другой программе (утилиты-просмотрщики) и другими пользователями по сети. Проверьте DataSession.
Почитайте хелп по команде USE. Как минимум в ваш код надо добавить параметр IN и тогда открытие таблицы будет выглядеть как
Код
USE MyTable IN 0
что откроет таблицу в ближайшей свободной рабочей области.
Если после исправления кода ошибка будет повторяться, указывайте номер ошибки и полный текст сообщения.
1
Alissia_Astorot
0 / 0 / 0
Регистрация: 13.06.2012
Сообщений: 9
22.06.2012, 10:24  [ТС] #3
Спасибо, пойду пробовать... А номера ошибки там не было. А полный ее текст - File in is use. Препод посоветовал посмотреть, какая-нибудь вообще таблица открыта ли командой BROWSE. Посмотрела... Удивилась. Открывается справочник - Section. Откуда он тут вообще - не ясно...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2012, 10:24
Привет! Вот еще темы с ответами:

Ошибка синтаксиса INSERT INTO? - Базы данных
Код: db.Execute('INSERT INTO News (Date, News) VALUES ('' + Date_ + '','' + Descr + '');'); Чего может быть неаерного? Я уже всё...

работа триггера INSERT - Базы данных
Подскажите, плиз. Есть вот такая ситуация (приложение работает на ASP). Вставляются данные в таблицу с помощью команды INSERT (строго...

Insert триггер в SQLite - Базы данных
Добрый день, подскажите пожалуйста, что делаю не так, есть две таблицы, хочу сделать, что бы при добавлении записи в одной из таблиц,...

Запросы с INSERT, UPDATE, DELETE - Базы данных
Помогите пожалуйста составить запросы на команды с INSERT, UPDATE, DELETE Таблица 1 - Predlozhenie Таблица2 - Zaiavka Столбци...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru