Форум по Delphi программированию

 



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.02.2016, 16:17
-=#PupaJr#=- -=#PupaJr#=- вне форума
Новичок
 
Регистрация: 17.08.2010
Сообщения: 68
Репутация: 518
По умолчанию Ключевое поле заполняется 0 (нулём)

Добрый день.
Создаю таблицу в базе данных MS JET4.0.
Несколько полей и первое ключевое:
ADOQuery1.SQL.Text:=('CREATE TABLE `sadka`(`Код` counter(1,1) primary key, .........
Таким образом всё создаётся и при работе в DBGrid база данных заполняется. Клавиша "вниз" создаёт новую запись, её заполняю, при этом ключевое поле остаётся пустым!!! естественно туда я не могу ничего написать сам - система не даёт(это же ключ), но при переходе на ранее созданную запись и попытке редактировать вылетает ошибка ".. нет строки для обновления..." - БРЕД!!
Пробывал записи делать через DBNavigator - тоже самое, ключ пишется 0.
Но, если закрыть базу и открыть заново, тут же, то все ключи посчитаны по порядку.
Пробывал создавать ещё 2_я способами, но эффект тот же.
На картинке фото глюка. Немного подлечил так - при перемещении по базе, ловлю клики и перегружаю базу, но почему то не всегда срабатывает, иногда проверка ключа раньше проходит нежели мой перехват.
Изображения
Тип файла: gif base_key.gif (31.0 Кбайт, 3 просмотров)
Ответить с цитированием
  #2  
Старый 02.02.2016, 18:56
lmikle lmikle сейчас на форуме
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,647
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

тип поля укажи identity (если правильно помню).
Ответить с цитированием
  #3  
Старый 04.02.2016, 16:53
-=#PupaJr#=- -=#PupaJr#=- вне форума
Новичок
 
Регистрация: 17.08.2010
Сообщения: 68
Репутация: 518
По умолчанию

Так это поле после "перезагрузки" базы пересчитывается правильно, и при удалении записи больше не повторяется её номер - тоесть ключ в полной мере работает...
НО попробую добавить. Спасибо.
Ответить с цитированием
  #4  
Старый 07.02.2016, 08:31
-=#PupaJr#=- -=#PupaJr#=- вне форума
Новичок
 
Регистрация: 17.08.2010
Сообщения: 68
Репутация: 518
По умолчанию

Попробывал добавить IDENTITY, ничего не изменилось, пробывал менять очерёдность - ничего не меняется.

Замучался уже, при создании новой записи и перепрыге со строки на строку - нет строки для обновления... конечно, если заполнять всё равномерно без прыжков по записям где отпечатался 0 в ключевом поле то всё проходит гладко... но мало ли какие случаии возникнут... и объясни юзеру что и как...
Изображения
Тип файла: jpg base_key_null.jpg (92.9 Кбайт, 2 просмотров)
Ответить с цитированием
  #5  
Старый 07.02.2016, 13:21
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,715
Репутация: 52347
По умолчанию

Попробуйте немного по другому описать ключ:
Код:
create table Test (id counter(1,1) primary key, ...
У меня без проблем все нормально создается и вводится:
Код:
DataSource1.DataSet := nil;
 ADOQuery1.SQL.Text := 'create table Test (id counter(1,1) primary key, Context char(50))';
 ADOQuery1.ExecSQL;
 ADOQuery1.SQL.Text := 'select * from Test';
 ADOQuery1.Open;
 DataSource1.DataSet := ADOQuery1;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 08.02.2016, 14:40
-=#PupaJr#=- -=#PupaJr#=- вне форума
Новичок
 
Регистрация: 17.08.2010
Сообщения: 68
Репутация: 518
По умолчанию

Добрый день.
Не вижу принципиальной разницы:
моё:
ADOQuery1.SQL.Text:=('CREATE TABLE '+protname+' (`№п/п` counter(1,1) PRIMARY KEY UNIQUE ,

Ваше:
ADOQuery1.SQL.Text := 'create table Test (id counter(1,1) primary key, Context char(50))';

Что-то не то, видимо не включено авто обновление/заполнение или ещё что-то, типо авто пресчёта... раз он срабатывает после пере-открытия базы....

Во вложении проект.
При создании базы требует файл шаблон (пустую базу ACCESS 2003) куда и будут писаться таблицы. Прикрепил бы, но не лезет сюда. Хотя разбил RARом на 3 части и залилось сюда.
Вложения
Тип файла: rar ПО_Автоклав_ц219.rar (75.9 Кбайт, 7 просмотров)
Тип файла: rar autoklavmdb.part1.rar (1.39 Мбайт, 4 просмотров)
Тип файла: rar autoklavmdb.part2.rar (1.39 Мбайт, 4 просмотров)
Тип файла: rar autoklavmdb.part3.rar (413.6 Кбайт, 4 просмотров)
Ответить с цитированием
  #7  
Старый 08.02.2016, 21:13
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,715
Репутация: 52347
По умолчанию

Что-то мой Акцес даже не хочет открывать эту базу - настолько старый формат. Не могу посмотреть даже структуру таблиц нормально.
ПС: Че то я тоже не пойму, почему у вас вместо нового значения, все время 0 лепится. Помнится, было у меня что-то такое на заре работы с Акцесом, но вот в чем прикол пока не вспомню. Попробую я к вашей базе другим приложением подключится. Есть у меня подозрение, что у вас примари индекс почему-то не подхватывается.
ППС: А попробуйте изменить значение CursorLocation на clUseServer. У меня в тесте стало нормально работать. Но это какой-то странный косяк, обычно этого не требуется.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 08.02.2016 в 21:42.
Ответить с цитированием
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение:
-=#PupaJr#=- (15.02.2016)
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:37.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2021

ВКонтакте   Facebook   Twitter