powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / LiteTible SQLite
11 сообщений из 11, страница 1 из 1
LiteTible SQLite
    #39966714
SDima55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Подскажите добавляю запись через LiteTible.Post пытаюсь зачитать ID (автоинкрементное поле) Выдает 0. После Close Open зачитывает. Понимаю что что-то нужно указать в свойствах но не могу разобраться. За ранее извиняюсь за тупой вопрос. Просто раньше работал с FIBPlus там все работало.
Код: pascal
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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
procedure TForm1.FormCreate(Sender: TObject);
const
 FileName = 'proba.db3';
var
 Path, SQL: String;
begin
 Path:=ExtractFilePath(Application.ExeName);
 IF Length(Path) > 1 then
    IF not(Path[Length(Path)] = '\')then Path:=Path+'\';

 IF FileExists(Path + FileName) = False then
    Begin
    LiteConnection1.Database:=Path + FileName;
    LiteConnection1.Options.Direct:=True;
    LiteConnection1.Options.ForceCreateDatabase:=True;
    LiteConnection1.Connected:=True;
    try
     SQL:='CREATE TABLE if not exists Tab_Sample ( '+
                         'ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,' +
                         'USERNAME CHAR(40) NOT NULL,' +
                         'DateReg DATE)';

     LiteConnection1.ExecSQL(SQL);
     SQL:='CREATE UNIQUE INDEX IDUSERDATE ON Tab_Sample (ID, USERNAME)';
     LiteConnection1.ExecSQL(SQL);

     LiteConnection1.Connected := False;
    except
     exit;
    end;
    end;//IF FileExists(Path + FileName) = False then

 LiteConnection1.Database:=Path + FileName;
 LiteConnection1.Options.Direct:=True;
 LiteConnection1.Options.ForceCreateDatabase:=True;
 try
  LiteConnection1.Connected := True;

  LiteTable1.SQL.Clear;
  LiteTable1.SQL.Add('SELECT * FROM Tab_Sample ORDER BY DateReg');
  LiteTable1.Open;
 except
  LiteConnection1.Connected := False;
 end;

end;

procedure TForm1.sBitBtn1Click(Sender: TObject);
begin
 LiteTable1.Append();
 LiteTable1.FieldByName('USERNAME').AsWideString:='User ' + IntToStr(LiteTable1.LastInsertId + 1);
 LiteTable1.FieldByName('DateReg').AsDateTime:=Now();
 LiteTable1.Post;

 ShowMessage('сен новый пользователь:' + 'ID = ' + IntToStr(LiteTable1.FieldByName('ID').AsInteger) + ' ' +
                                         'USERNAME = ' + LiteTable1.FieldByName('USERNAME').AsWideString + ' ' +
                                         'DateReg = ' + DateToStr(LiteTable1.FieldByName('DateReg').AsDateTime));
end;
...
Рейтинг: 0 / 0
LiteTible SQLite
    #39966940
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SDima55,

А вопрос-то в чём?
...
Рейтинг: 0 / 0
LiteTible SQLite
    #39966941
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cobalt747
SDima55,

А вопрос-то в чём?


Карбюратор не сосает,
Маховик земля бросает.
...
Рейтинг: 0 / 0
LiteTible SQLite
    #39966942
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы бы хоть написали, какого типа у вас этот LiteTable. Если это AnyDac (FireDac), то там надо установить признак автоинкрементного и самозаполняемого поля где-то в UpdateOptions. Точнее не скажу: Арефьев свой сайт с хелпом ( http://www.da-soft.com/anydac/) закрыл, видимо.
...
Рейтинг: 0 / 0
LiteTible SQLite
    #39966983
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это DevArt LiteDac
...
Рейтинг: 0 / 0
LiteTible SQLite
    #39968634
Фотография devart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Описываемое Вами поведение присутствовало в ранних версиях LiteDAC. Попробуйте протестировать работу Вашего примера с использованием последней версии LiteDAC 4.2.4 (01-Jun-20)
...
Рейтинг: 0 / 0
LiteTible SQLite
    #39969664
SDima55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry Arefiev,
Извеняюсь давно не заходил небыло возможности
Да это Deveart 4.2 последняя версия
...
Рейтинг: 0 / 0
LiteTible SQLite
    #39969669
SDima55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cobalt747,

Вопрос в том как сделать так чтоб он в одном наборе DataSet возращал ID (AutoInc). Сейчас я зделал так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
 Ind:=Tbl.LastInsertId;

 Tbl.DisableControls();
 Tbl.Close();
 Tbll.Open();
 Tbl.Locate('ID', Ind, []);
 Tbl.EnableControls();

 Result:=Tbl.FieldByName('ID').AsInteger;



Мне данное решение не очень нравиться. Ведь я работаю в пределе одного DataSet
...
Рейтинг: 0 / 0
LiteTible SQLite
    #39969676
SDima55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
devart,

Я установил последнюю версию. Набросал отдельный проект. Думал может что другое влияет в основном проект. Но эффект тот же. Пока я DataSet не переодкрою он не возращает нужное значение.
...
Рейтинг: 0 / 0
LiteTible SQLite
    #39969811
Фотография devart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пожалуйста пришлите полный исходный код Вашего тестового проекта, воспроизводящего описываемую проблему. Это удобно сделать с помощью формы e-support https://www.devart.com/company/contactform.html
...
Рейтинг: 0 / 0
LiteTible SQLite
    #39969893
SDima55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
devart,

Отправил.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / LiteTible SQLite
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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