singlepost

lazarus. Не заполняется DbGrid << На главную или назад  

Доброго времени суток=)
база данных на firebird, интерфейс на lazarus. Соединение через IBConnection, SLQQuery, DataSourse, SQLTransactoin. вывод данных через DbGrid.
вопрос такой: есть 2 таблицы (table1 и table2 допустим). В DBGrid (table1) есть поле в выпадающим списком (поле из table2). Надо чтобы при выборе определенного значения в этом списке и при нажатии кнопки заполнялись соответствующие поля из table2.
код заполнения:

procedure TForm10.Button1Click(Sender: TObject);
var k,i:integer;
p:string;
begin
k:=DBGrid1.DataSource.DataSet.FieldByName('n_dog').Value;
dm.SQLQuery9.First;

For i:=0 to (dm.SQLQuery9.RecordCount-1) do
begin

if dm.SQLQuery9.FieldByName('N').AsString<>IntToStr(k) Then
begin
p:=dm.DataSource9.DataSet.Fields[4].AsString;

end
else
// до этого момента все работает правильно
DBGrid1.DataSource.DataSet.Fields[6].Value:=p;

dm.SQLQuery9.Next;

end;
end;
end;

какая ошибка? почему не заполняет?

спасибо заранее =)

11 ответов в теме “lazarus. Не заполняется DbGrid”

  1. 8
    Женечка Кушнир ответил:

    спасибо, все получилось!!!!!!!!!!

  2. 7
    Леонид Максимов ответил:

    ыыы :) )

    я не знаком с вашей объектной моделью, но должно быть что-то вроде

    For i:=0 to (dm.SQLQuery9.RecordCount-1) do
    begin
    if dm.SQLQuery9.FieldByName('N').AsString<>IntToStr(k) Then
    begin
    p:=dm.DataSource9.DataSet.Fields[4].AsString;

    end
    else begin
    if DBGrid1.DataSource.DataSet.EOF Then
    DBGrid1.DataSource.DataSet.AddNew;
    else
    DBGrid1.DataSource.DataSet.Edit;
    DBGrid1.DataSource.DataSet.Fields[6].Value:=p;
    DBGrid1.DataSource.DataSet.Update;
    end;

    dm.SQLQuery9.Next;
    end;

  3. 6
    Женечка Кушнир ответил:

    есть записи, и надо чтобы это работало и при заполнении новой строки и при редактировании
    написала так:
    For i:=0 to (dm.SQLQuery9.RecordCount-1) do
    begin
    DBGrid1.DataSource.DataSet.RecordCount;
    if dm.SQLQuery9.FieldByName('N').AsString<>IntToStr(k) Then
    тож не помогло, все таже ошибка:
    SQLQuery10: Operation not allowed, dataset "SQLQUery10" is not in an edit or insetr state.
    SQLQuery10 – это table2

  4. 5
    Женечка Кушнир ответил:

    не помогает, он раньше спотыкается…. на этой строчке
    DBGrid1.DataSource.DataSet.Fields[6].Value:=p;
    сразу ошибка

  5. 4
    Леонид Максимов ответил:

    а у вас записи в гриде вообще есть? :)

    DBGrid1.DataSource.DataSet.RecordCount

  6. 3
    Женечка Кушнир ответил:

    перематывать, это:
    DBGrid1.DataSource.DataSet.Close;
    ……..
    DBGrid1.DataSource.DataSet.Open;
    ???

  7. 2
    Леонид Максимов ответил:

    DBGrid1.DataSource.DataSet.Next;

  8. 1
    Леонид Максимов ответил:

    а перематывать DBGrid1 не надо? :)

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.