2015-05-18 4 views
0

Я получаю ошибку нарушения доступа, но я знаю, что код верен, и где может быть проблема? Я пытаюсь заполнить данные ComboBox whit из локального AccessDB.Delphi ComboBox Нарушение доступа к combobox

var i : integer; 
    x : string; 
begin 
     with DataModule3.ADOTable1 do begin 
     if RecordCount > 0 then 
      for i := 1 to RecordCount do begin 
      RecNo := i; 
      x := FieldByName('Teacher').AsString; 
      ComboBox1.Items.Add(x); 
      end; 
     end; 
end; 

Я пробовал много вещей, и ничего не работает, я пробовал много комбобокса типизированный но до сих пор не работаю только раз combobx показал значение, когда я выбрал строку в таблице, то он показал в выпадающем списке значение строк, по которому мне нужно отфильтровать ...

+0

Я ничего не знаю о TADOTable, но не должен ли цикл идти от нуля до RecordCount-1? –

+0

@LURD, он внутренне устанавливает свойство ['AbsolutePosition'] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms676594%28v=vs.85%29.aspx), которое равно 1 основанный индекс. – TLama

+2

Я бы предположил, что ваша проблема заключается в использовании Recno. Я полностью избегаю этого, потому что он не работает, когда вы устанавливаете фильтр в своей таблице, и, когда я правильно помню, он не поддерживается всей базой данных. Я использую Таблица1.first; в то время как не Table1.Eof do ... сделайте свой персонал Table1.next –

ответ

1

Нарушение прав доступа возникает, скорее всего, потому, что вы забыли создать экземпляр вашего datamodule DataModule3. Проверьте это, вызвав функцию Assigned.

+1

Скорее всего? Ни за что. Шансы одинаковы для объектов «ADOTable1» и «ComboBox1» с данной информацией ... – TLama

+0

Скорее всего потому, что я считаю, что OP не знает, чтобы динамически создавать компоненты. В самом деле, шансы одинаковы. – RBA

1
begin 
    with DataModule3.ADOTable1 do 
     if Active then 
      while not Eof do 
       begin 
        ComboBox1.Items.Add(FieldByName('Teacher').AsString); 
        Next; 
       end; 
end; 
+4

Добро пожаловать в переполнение стека. Автономный код без каких-либо объяснений не отвечает. Вам нужно рассказать, что отличает ваш код. В частности, как ваш код разрешает нарушение доступа? –

Смежные вопросы