lsSQL = "Select Field1, Field2 from mytable into cursor tmpCursor2 readwrite order by 1" && note the new cursor name! *.RecordSource = '' && This line starts the problem &lsSQL. select TempCursor append from dbf('tempcursor2') * .RecordSource = 'tmpCursor' * .grcColumn1.ControlSource = 'tmpCursor.Field1' * .grcColumn2.ControlSource = 'tmpCursor.Field2' yourgrid.Refresh()Note that with this solution you never change the grid's source-
>&& Grid is prebuilt (columns defined) >with this && this code is run in a method in the grid called Populate > lsSQL = "Select Field1, Field2 from mytable into cursor tmpCursor readwrite order by 1" > .RecordSource = '' > > &lsSQL. > > .RecordSource = 'tmpCursor' > .grcColumn1.ControlSource = 'tmpCursor.Field1' > .grcColumn2.ControlSource = 'tmpCursor.Field2' > > .Refresh() > >Endwith >>
>>WITH thisform.GrdFloor >> .columncount = 16 >> .recordsource = "tmpfloor" >> .column1.controlsource = "tmpfloor.fn_room" >> .column2.ComboCeiling.ColumnCount = 1 >> .column2.ComboCeiling.ColumnWidths = "120" >> .column2.ComboCeiling.ColumnLines = .t. >> .column2.ComboCeiling.DisplayCount = 6 >> .column2.ComboCeiling.rowsourcetype = 3 && - SQL Statement >> .column2.ComboCeiling.rowsource = "SELECT floortype FROM floo...." >> .column1.width = 120 >> .column1.fontsize = 8 >> .column1.readonly = .f. >> .column1.enabled = .t. >> .column1.movable = .f. >> .column1.resizable = .f. >> .column1.header1.caption = "Room" >>ENDWITH >>>>
>>>this.Recordsource = '' >>>{Execute sql statement here} >>>this.RecordSource = 'MyCursor' >>> >>>{reset Controlsources for Columns} >>>this.Refresh() >>>>>>