2012-02-06 2 views
0

Я использую vfp9, но программа, возможно, была написана на более раннем языке. Когда я открываю базу данных через vfp, поле читается только, в отличие от других полей. Выполнение вручную (выберите max + 1) не работает на вставке, оно просто делает поле = 0.Как автоматически увеличивать поле в foxpro

У меня возникли проблемы с поиском примеров в Интернете для правильного синтаксиса, может ли кто-нибудь помочь?

Редактировать: ОК, решение должно было оставить поле пустым. Поле находится в таблице, которая в конечном итоге добавляется к более крупной таблице (той, которая имеет поле автонабора). Однако, прежде чем он будет добавлен, поле используется в нескольких поисках.

Я бы предпочел не исправлять код везде, просто установив поле null перед добавлением. replace field with null дает ошибку. Каков правильный синтаксис для установки поля таблицы в null?

Изменить снова: сбросить колонку. По-видимому, вы не можете установить числовое поле в значение null.

+0

Вы можете установить число (и, возможно, другие) полей числового типа к нулю, если вы установите в поле, чтобы принять аннулирует. – DaveB

+0

ли это приведет к другим программам, которые используют одну и ту же таблицу? Я не решаюсь вмешиваться в структуры таблиц, которые уже созданы и используются. – slicedtoad

+0

Если у вас есть код, который не ожидает нулевого значения, то да, этот код может вызвать ошибку. Не устанавливая поле для принятия нулей, вам может потребоваться найти другое решение для вашей проблемы. – DaveB

ответ

1

Если ваша структура таблицы выглядит следующим образом:

Structure for table: D:\SO9162291.DBF 
Number of data records: 2  
Date of last update: 02/06/12 
Code Page:    1252  
Field Field Name  Type    Width Dec Index Collate Nulls 
    1 COUNT   Integer     4       Yes 
    2 CONTENTS  Character    24        No 
** Total **         30 

Поле счетчика устанавливается, чтобы позволить обнуляет, так что вы можете установить поле целого типа к нулевому значению, с использованием любого из следующих способов.

USE so9162291 
INSERT INTO so9162291 (count, contents) VALUES (null, "Test record") 
UPDATE so9162291 set count = null WHERE contents = "Test record" 
REPLACE count WITH null 
+0

Фактически, когда вы вставляете в таблицу с автоматическим приращением, вы должны полностью оставить этот столбец OUT команды вставки, он будет автоматически сгенерирован ... вставлять в значения YourTable (содержимое) ('test') - автоматически назначит целое значение «count». – DRapp

+0

@DRapp - Мой ответ был больше связан с вопросом: «Какой правильный синтаксис для установки поля таблицы в null?» а не автоматически увеличивать поля. Я согласен с вашим комментарием. Спасибо за ввод. – DaveB

0

Я бы выполнить следующие SQL запросы:

SELECT MAX(id)+1 AS laCount FROM so9162291 INTO CURSOR temp 

INSERT INTO so9162291 (count, contents) VALUES(temp.laCount,"Test record") 
+0

Пожалуйста, правильно отформатируйте свой код –

 Смежные вопросы

  • Нет связанных вопросов^_^