powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Combobox.Items.Insert - unable to insert a line
25 сообщений из 25, страница 1 из 1
Combobox.Items.Insert - unable to insert a line
    #39630360
Фотография 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".
...
Рейтинг: 0 / 0
Combobox.Items.Insert - unable to insert a line
    #39630364
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или длина более 255, или непечатные символы
ищи
...
Рейтинг: 0 / 0
Combobox.Items.Insert - unable to insert a line
    #39630368
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tactical Nuclear Penguinили длина более 255, или непечатные символы
ищи
Непечатных не нашел, а NAME_CASH_LIST в таблице ограничен varchar(15)
...
Рейтинг: 0 / 0
Combobox.Items.Insert - unable to insert a line
    #39630369
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarTactical Nuclear Penguinили длина более 255, или непечатные символы
ищи
Непечатных не нашел, а NAME_CASH_LIST в таблице ограничен varchar(15)

возможно ты их просто не видишь
пробовал смотреть в каком-нибудь hex-редакторе?
...
Рейтинг: 0 / 0
Combobox.Items.Insert - unable to insert a line
    #39630373
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Combobox.Items.Insert - unable to insert a line
    #39630376
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Combobox.Items.Insert - unable to insert a line
    #39630379
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

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

превышает cbb1.Items.Coun , конечно же.
...
Рейтинг: 0 / 0
Combobox.Items.Insert - unable to insert a line
    #39630601
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Combobox.Items.Insert - unable to insert a line
    #39630634
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокЕсли делаешь перебор записей в датасете, обязательно необходимо позиционировать начало набора
С чего бы, он только что его открыл.
А вот ExecSQL это действительно фэйл))
...
Рейтинг: 0 / 0
Combobox.Items.Insert - unable to insert a line
    #39630989
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2С чего бы, он только что его открыл.
феншуй, понимаешь. Точно так же, как и try-finally при создании объекта. Чтоб потом волосы на копчике не дергать, гадая, почему не работает.
...
Рейтинг: 0 / 0
Combobox.Items.Insert - unable to insert a line
    #39631342
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Докфеншуй, понимаешь. Точно так же, как и try-finally при создании объекта. Чтоб потом волосы на копчике не дергать, гадая, почему не работает.
try-finally имеет смысл, а вот First после открытия не особо. Все равно что Query.SQL.Clear перед Query.SQL.Text := '...' :) Разве что для собственного успокоения
...
Рейтинг: 0 / 0
Combobox.Items.Insert - unable to insert a line
    #39631929
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2try-finally имеет смысл, а вот First после открытия не особо.
"Окружающий мир не обязан соответствовать нашим представлениям о нем" ©

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

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


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

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

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


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

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

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

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

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

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


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