Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Combobox.Items.Insert - unable to insert a line / 25 сообщений из 25, страница 1 из 1
15.04.2018, 08:47
    #39630360
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
Добрый день
Мне нужно вывести список филиалов и номеров касс в выпадающий список и в зависимости от выбранного значения номер кассы передать дальше. Пытался сделать вот так:
Код: 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.
procedure TForm1.FormCreate(Sender: TObject);
  var
      db: TpFIBDatabase;
      trans: TpFIBTransaction;
      query: TpFIBQuery;
      List: TStringList;
begin
      /////////////////////////////////////////////////
      List := TStringList.Create;
      db:=TpFIBDatabase.Create(nil);
      db.connectparams.Username:='SYSDBA';
      db.connectparams.Password:='masterkey';
      db.DatabaseName:='srv-250:S-Market_ukm';
      db.LibraryName:= 'fbclient.dll';
      db.Connected:= true;
      trans:= TpFIBTransaction.Create(nil);
      query:= TpFIBQuery.Create(nil);
      trans.DefaultDatabase:=db;
      query.Transaction:=trans;
      memo1.Lines.add('Получаем список касс');
      List.add('Получаем список касс');
      query.SQL.Clear;
      query.SQL.Add('select ID_CASH_LIST, NAME_CASH_LIST from CASH_LIST where UPLOAD_PATH <> ""');
      trans.StartTransaction;
      query.ExecQuery;
      while not query.EOF do
                              begin
                                cbb1.Items.Insert( query.FieldByName('ID_CASH_LIST').AsInteger ,query.FieldByName('NAME_CASH_LIST').AsString);
                                 query.next;
                              end;
      trans.Commit;
      memo1.Lines.add('Получаем список касс');
end;


но при выполнении получаю ошибку "unable to insert a line".
...
Рейтинг: 0 / 0
15.04.2018, 09:23
    #39630364
Tactical Nuclear Penguin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
или длина более 255, или непечатные символы
ищи
...
Рейтинг: 0 / 0
15.04.2018, 09:53
    #39630368
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
Tactical Nuclear Penguinили длина более 255, или непечатные символы
ищи
Непечатных не нашел, а NAME_CASH_LIST в таблице ограничен varchar(15)
...
Рейтинг: 0 / 0
15.04.2018, 10:03
    #39630369
Tactical Nuclear Penguin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
GallemarTactical Nuclear Penguinили длина более 255, или непечатные символы
ищи
Непечатных не нашел, а NAME_CASH_LIST в таблице ограничен varchar(15)

возможно ты их просто не видишь
пробовал смотреть в каком-нибудь hex-редакторе?
...
Рейтинг: 0 / 0
15.04.2018, 10:28
    #39630373
MaratIsk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
GallemarДобрый день
Мне нужно вывести список филиалов и номеров касс в выпадающий список и в зависимости от выбранного значения номер кассы передать дальше. Пытался сделать вот так:
Код: 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.
procedure TForm1.FormCreate(Sender: TObject);
  var
      db: TpFIBDatabase;
      trans: TpFIBTransaction;
      query: TpFIBQuery;
      List: TStringList;
begin
      /////////////////////////////////////////////////
      List := TStringList.Create;
      db:=TpFIBDatabase.Create(nil);
      db.connectparams.Username:='SYSDBA';
      db.connectparams.Password:='masterkey';
      db.DatabaseName:='srv-250:S-Market_ukm';
      db.LibraryName:= 'fbclient.dll';
      db.Connected:= true;
      trans:= TpFIBTransaction.Create(nil);
      query:= TpFIBQuery.Create(nil);
      trans.DefaultDatabase:=db;
      query.Transaction:=trans;
      memo1.Lines.add('Получаем список касс');
      List.add('Получаем список касс');
      query.SQL.Clear;
      query.SQL.Add('select ID_CASH_LIST, NAME_CASH_LIST from CASH_LIST where UPLOAD_PATH <> ""');
      trans.StartTransaction;
      query.ExecQuery;
      while not query.EOF do
                              begin
                                cbb1.Items.Insert( query.FieldByName('ID_CASH_LIST').AsInteger ,query.FieldByName('NAME_CASH_LIST').AsString);
                                 query.next;
                              end;
      trans.Commit;
      memo1.Lines.add('Получаем список касс');
end;


но при выполнении получаю ошибку "unable to insert a line".

может не query.ExecQuery, а query.Open
...
Рейтинг: 0 / 0
15.04.2018, 10:45
    #39630376
Polesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
Gallemar, привет.

Код: pascal
1.
cbb1.Items.Insert( query.FieldByName('ID_CASH_LIST').AsInteger ,query.FieldByName('NAME_CASH_LIST').AsString);



Видимо, значение поля ID_CASH_LIST в таблице идет не по порядку и начинается не с нуля,
т.е. при заполнении cbb1 в какой-то момент превышает Pred( cbb1.Items.Count ).

Я бы сделал так:

Код: pascal
1.
2.
3.
4.
5.
6.
  while not query.EOF do
  begin
    cbb1.Items.AddObject( query.FieldByName('NAME_CASH_LIST').AsString,
                          TObject( query.FieldByName('ID_CASH_LIST').AsInteger ) );
    query.next;
  end;



Для получения значения первичного ключа по выбранному наименованию NAME_CASH_LIST
Код: pascal
1.
  IdCashList := integer( cbb1.Items.Objects[cbb1.ItemIndex] );



С уважением, Polesov.
...
Рейтинг: 0 / 0
15.04.2018, 10:51
    #39630379
Polesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
Polesov,

> превышает Pred( cbb1.Items.Count ) .

превышает cbb1.Items.Coun , конечно же.
...
Рейтинг: 0 / 0
16.04.2018, 09:36
    #39630601
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
Gallemar
Код: pascal
1.
2.
3.
4.
5.
6.
7.
      query.ExecQuery;
      query.First; //где?
      while not query.EOF do
                              begin
                                cbb1.Items.Insert( query.FieldByName('ID_CASH_LIST').AsInteger ,query.FieldByName('NAME_CASH_LIST').AsString);
                                 query.next;
                              end;



Если делаешь перебор записей в датасете, обязательно необходимо позиционировать начало набора
...
Рейтинг: 0 / 0
16.04.2018, 10:34
    #39630634
Василий 2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
ДокЕсли делаешь перебор записей в датасете, обязательно необходимо позиционировать начало набора
С чего бы, он только что его открыл.
А вот ExecSQL это действительно фэйл))
...
Рейтинг: 0 / 0
16.04.2018, 17:09
    #39630989
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
Василий 2С чего бы, он только что его открыл.
феншуй, понимаешь. Точно так же, как и try-finally при создании объекта. Чтоб потом волосы на копчике не дергать, гадая, почему не работает.
...
Рейтинг: 0 / 0
17.04.2018, 10:07
    #39631342
Василий 2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
Докфеншуй, понимаешь. Точно так же, как и try-finally при создании объекта. Чтоб потом волосы на копчике не дергать, гадая, почему не работает.
try-finally имеет смысл, а вот First после открытия не особо. Все равно что Query.SQL.Clear перед Query.SQL.Text := '...' :) Разве что для собственного успокоения
...
Рейтинг: 0 / 0
17.04.2018, 18:33
    #39631929
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
Василий 2try-finally имеет смысл, а вот First после открытия не особо.
"Окружающий мир не обязан соответствовать нашим представлениям о нем" ©

Нет смысла спорить :)
...
Рейтинг: 0 / 0
18.04.2018, 17:13
    #39632705
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
Док,

Где-то есть такие рекомендации, или это чисто страхи их детства?
...
Рейтинг: 0 / 0
18.04.2018, 17:20
    #39632718
Любезный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
В компоненте TpFIBQuery, который, к слову, несовместим с TDataset, нет метода ExecSQL. Для всех видов запросов используется именно ExecQuery, подобно компоненту TIBSQL.
...
Рейтинг: 0 / 0
19.04.2018, 09:00
    #39632942
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
MaratIsk
может не query.ExecQuery, а query.Open
Нет.
Open
property Open: Boolean;
Это свойство показывает, активен ли запрос.


Путаешь с FIBDataset.Open, там да, это метод.
...
Рейтинг: 0 / 0
19.04.2018, 11:02
    #39633025
fraks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
ЛюбезныйВ компоненте TpFIBQuery, который, к слову, несовместим с TDataset, нет метода ExecSQL. Для всех видов запросов используется именно ExecQuery, подобно компоненту TIBSQL.

Так именно в том и кайф что TpFIBQuery и TIBSQL это ни разу не датасеты, а только лишь способ выполнить запрос и получить возвращаемые данные. По одной записи. Куда хочешь их туда и складываешь.
Мне все эти интеллектуальные навороты фибов вообще не нужны.
Просто про UIB я узнал несколько позже :)
...
Рейтинг: 0 / 0
19.04.2018, 14:12
    #39633176
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
makhaonГде-то есть такие рекомендации, или это чисто страхи их детства?
методология. ИМХО, любой Next(Prior) должен предваряться First(Last). Часто избавляет от необходимости думать, был ли набор открыт до этого или его только что открыли. По мне, лишняя строчка кода пальцы не сотрет :)

из прошлой жизниПомнится, в бытность работы в хирургии, у нас был заведен ряд неписанных правил. Одно из них гласило: название любого раствора, заливаемого на опер. столе в открытое брюхо, должно было быть вслух и внятно зачитано всем присутствующим на тот момент там. Это избавляло от мучительных сомнений потом, когда шло что-то не так.
...
Рейтинг: 0 / 0
19.04.2018, 14:15
    #39633180
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
fraksTIBSQL это ни разу не датасеты
ЕМНИП, в дельфях это датасет, только не кэширующий. Поэтому предпочтителен для множественных модифицирующих запросов.


Gallemar,
ты ошибку-то нашел?
...
Рейтинг: 0 / 0
19.04.2018, 15:34
    #39633259
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
ДокGallemar,
ты ошибку-то нашел?
Да,спасибо
...
Рейтинг: 0 / 0
19.04.2018, 17:06
    #39633331
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
GallemarДа,спасибо
Ну, ты как маленький. Колись. А тут народ волнуется :)
...
Рейтинг: 0 / 0
19.04.2018, 17:20
    #39633343
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
ДокПо мне, лишняя строчка кода пальцы не сотрет :)
С этим можно согласиться. Но есть другое правило, по мне, более важное: "Чем больше строк - тем больше в них ошибок".
...
Рейтинг: 0 / 0
19.04.2018, 20:51
    #39633419
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
Док,

авторметодология. ИМХО, любой Next(Prior) должен предваряться First(Last). Часто избавляет от необходимости думать, был ли набор открыт до этого или его только что открыли.

Непонятная какая-то методология.

авторПо мне, лишняя строчка кода пальцы не сотрет :)

Оккам против лишних строк.
...
Рейтинг: 0 / 0
20.04.2018, 17:17
    #39633903
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
softwarer, makhaon
Я же говорю, нет смысла спорить :)
...
Рейтинг: 0 / 0
20.04.2018, 21:21
    #39633988
Любезный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
авторЕМНИП, в дельфях это датасет, только не кэширующий.
Нет! К истинному некэширующему датасету (например, в DBX) можно легко пришить ClientDataSet. А так как TIBSQL не является наследником TDataset, с ним такой номер не прокатит.
...
Рейтинг: 0 / 0
20.04.2018, 22:01
    #39633995
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox.Items.Insert - unable to insert a line
Любезный,

у него другая плюшка: когда нужна только одна, 'текущая', запись, что бывает, то замены в ibx'е ему нет.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Combobox.Items.Insert - unable to insert a line / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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