Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / LiteTible SQLite / 11 сообщений из 11, страница 1 из 1
06.06.2020, 10:39
    #39966714
SDima55
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiteTible SQLite
Здравствуйте. Подскажите добавляю запись через 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
07.06.2020, 23:14
    #39966940
Cobalt747
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiteTible SQLite
SDima55,

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

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


Карбюратор не сосает,
Маховик земля бросает.
...
Рейтинг: 0 / 0
07.06.2020, 23:48
    #39966942
bk0010
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiteTible SQLite
Вы бы хоть написали, какого типа у вас этот LiteTable. Если это AnyDac (FireDac), то там надо установить признак автоинкрементного и самозаполняемого поля где-то в UpdateOptions. Точнее не скажу: Арефьев свой сайт с хелпом ( http://www.da-soft.com/anydac/) закрыл, видимо.
...
Рейтинг: 0 / 0
08.06.2020, 09:23
    #39966983
Dmitry Arefiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiteTible SQLite
Это DevArt LiteDac
...
Рейтинг: 0 / 0
12.06.2020, 16:27
    #39968634
devart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiteTible SQLite
Описываемое Вами поведение присутствовало в ранних версиях LiteDAC. Попробуйте протестировать работу Вашего примера с использованием последней версии LiteDAC 4.2.4 (01-Jun-20)
...
Рейтинг: 0 / 0
16.06.2020, 11:27
    #39969664
SDima55
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiteTible SQLite
Dmitry Arefiev,
Извеняюсь давно не заходил небыло возможности
Да это Deveart 4.2 последняя версия
...
Рейтинг: 0 / 0
16.06.2020, 11:35
    #39969669
SDima55
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiteTible SQLite
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
16.06.2020, 11:41
    #39969676
SDima55
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LiteTible SQLite
devart,

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

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


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