I'm using Delphi 5, and I want to display the results of a MySQL query in a cxGrid. I have the cxGrid, cxGridLevel, and cxGridDBTableView set up the way they default to when added to a form. The DataController.DataSource for the cxGridDBTableView is a TDataSource named DSNewKits with its DataSet set to a tMySQLQuery named NewKitsQry.
When it's time to display the data, I set the Enabled property of DSNewKits to false, run the Close method of NewKitsQry, then set the Enabled property of DSNewKits to true, set the SQL.Text property of NewKitsQry, and run the Open method NewKitsQry. I then have a message dialog display the number of results in the query, and there are 408, so I know the query is working properly. The grid displays rows & columns with lines in between, no "No data to display" message, but all the cells are blank.
I have tried doing these steps in a different order, commenting out some of them, etc., but nothing causes the data to display. I'm sure I'm missing something simple &/or obvious, but I was unable to find an example online. Thank you for any help you can give!
(Edited to include code) Here is my code:
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView,
cxClasses, cxControls, cxGridCustomView, cxGrid, ExtCtrls, Db,
mySQLDbTables, ovcbase, ovcfiler, ovcstore,
gECCConst,
StdCtrls;
type
Tf_cw_cxgrid_db = class(TForm)
WebCatDB: TmySQLDatabase;
NewKitsQry: TmySQLQuery;
DSNewKits: TDataSource;
Panel1: TPanel;
cxNewKitsGrid: TcxGrid;
cxNewKitsGridDBTableView1: TcxGridDBTableView;
cxNewKitsGridDBTableView1CompanyID: TcxGridDBColumn;
cxNewKitsGridDBTableView1RegionID: TcxGridDBColumn;
cxNewKitsGridDBTableView1BranchID: TcxGridDBColumn;
cxNewKitsGridDBTableView1CustID: TcxGridDBColumn;
cxNewKitsGridDBTableView1Username: TcxGridDBColumn;
cxNewKitsGridDBTableView1KitID: TcxGridDBColumn;
cxNewKitsGridDBTableView1KitComment: TcxGridDBColumn;
cxNewKitsGridDBTableView1KitEffDate: TcxGridDBColumn;
cxNewKitsGridDBTableView1KitExpDate: TcxGridDBColumn;
cxNewKitsGridDBTableView1KitNote: TcxGridDBColumn;
cxNewKitsGridDBTableView1KitType: TcxGridDBColumn;
cxNewKitsGridDBTableView1KitFlags: TcxGridDBColumn;
cxNewKitsGridDBTableView1KitTab: TcxGridDBColumn;
cxNewKitsGridDBTableView1KitAddDate: TcxGridDBColumn;
cxNewKitsGridDBTableView1KitEditedDate: TcxGridDBColumn;
cxNewKitsGridDBTableView1Line: TcxGridDBColumn;
cxNewKitsGridDBTableView1ProductID: TcxGridDBColumn;
cxNewKitsGridDBTableView1MfgProdID: TcxGridDBColumn;
cxNewKitsGridDBTableView1PartNum: TcxGridDBColumn;
cxNewKitsGridDBTableView1ProductDesc: TcxGridDBColumn;
cxNewKitsGridDBTableView1Qty: TcxGridDBColumn;
cxNewKitsGridDBTableView1RefQty: TcxGridDBColumn;
cxNewKitsGridDBTableView1UnitPrice: TcxGridDBColumn;
cxNewKitsGridDBTableView1UnitPriceType: TcxGridDBColumn;
cxNewKitsGridDBTableView1UofM: TcxGridDBColumn;
cxNewKitsGridDBTableView1PSUofM: TcxGridDBColumn;
cxNewKitsGridDBTableView1UNSPSC: TcxGridDBColumn;
cxNewKitsGridDBTableView1ItemNote: TcxGridDBColumn;
cxNewKitsGridDBTableView1ItemGroupID: TcxGridDBColumn;
cxNewKitsGridDBTableView1ItemDrpDnHdr: TcxGridDBColumn;
cxNewKitsGridDBTableView1ItemSection: TcxGridDBColumn;
cxNewKitsGridDBTableView1ItemFlags: TcxGridDBColumn;
cxNewKitsGridDBTableView1ItemAddDate: TcxGridDBColumn;
cxNewKitsGridDBTableView1ItemEditedDate: TcxGridDBColumn;
cxNewKitsGrid1Level1: TcxGridLevel;
RegistryStore: TOvcRegistryStore;
userqry: TmySQLQuery;
Button1: TButton;
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
f_cw_cxgrid_db: Tf_cw_cxgrid_db;
implementation
{$R *.DFM}
procedure Tf_cw_cxgrid_db.FormShow(Sender: TObject);
var
Server : String;
User : String;
Passwd : String;
DBName : String;
Button : Integer;
WCPath : String;
begin
RegistryStore.Open;
Server := RegistryStore.ReadString( 'SBAdmin', 'Host', '127.0.0.1');
User := RegistryStore.ReadString( 'SBAdmin', 'User', '');
Passwd := RegistryStore.ReadString( 'SBAdmin', 'Password', '');
DBName := RegistryStore.ReadString( 'SBAdmin', 'Database', WebCatDefUserDBName ); { caw 7-24-20 }
RegistryStore.Close;
WebCatDB.Host := Server;
WebCatDB.UserName := User;
WebCatDB.UserPassword := Passwd;
WebCatDB.DatabaseName := 'WEBCAT_' + DBName;
end;
procedure Tf_cw_cxgrid_db.Button1Click(Sender: TObject);
begin
DSNewKits.Enabled := False;
NewKitsQry.Close;
try
DSNewKits.Enabled := True;
NewKitsQry.SQL.Text := 'SELECT KitHdrs.CompanyID, KitHdrs.RegionID, KitHdrs.BranchID, KitHdrs.CustID, ' +
'KitHdrs.Username, KitHdrs.KitID, KitHdrs.KitComment, KitHdrs.KitEffDate, ' +
'KitHdrs.KitExpDate, KitHdrs.KitNote, KitHdrs.KitType, KitHdrs.KitFlags, KitHdrs.KitTab, ' +
'KitHdrs.KitAddDate, KitHdrs.KitEditedDate, KitLines.Line, KitLines.ProductID, ' +
'KitLines.MfgProdID, KitLines.PartNum, KitLines.ProductDesc, KitLines.Qty, ' +
'KitLines.RefQty, KitLines.UnitPrice, KitLines.UnitPriceType, KitLines.UofM, ' +
'KitLines.PSUofM, KitLines.UNSPSC, KitLines.ItemNote, KitLines.ItemGroupID, ' +
'KitLines.ItemDrpDnHdr, KitLines.ItemSection, KitLines.ItemFlags, ' +
'KitLines.ItemAddDate, KitLines.ItemEditedDate ' +
'FROM KitHdrs JOIN KitLines ON KitHdrs.KitSeq = KitLines.KitSeq;';
NewKitsQry.Open;
cxNewKitsGridDBTableView1.DataController.CreateAllItems;
MessageDlg( 'There are ' + IntToStr( NewKitsQry.RecordCount ) + ' records.', mtInformation, [mbOK], 0 );
except
MessageDlg( 'There was an error displaying the kit databases.', mtError, [mbOK], 0 );
end;
end;
end.