![]() |
|||||||||||||||||
|
|
|||||||||||||||||
|
|
|||||||||
|
Delphi |
DELPHI DEVELOPER SUPPORT
Areas of concentration under: database
Area: database\cab file Problem: Installing CAB file on machine with not enough disk space returns error msg.: "Decompression error. Fail to create mapping for BDEADMIN.CPL". Like other installs, this one should check available disk space, display the amount available along with the amount required. Steps: Copy Bdeinst.dll and cab file to local machine Run Regsvr32.exe with Bdeinst.dll Area: database\config maintenance Problem: D4 install - CD image: Merge problem when a 16-bit configuration file is set active in Registry|Configfile01. Configfile is moved to current BDE directory and original aliases are removed. workaround: manually merge the orginal file with the newly installed cfg file. Area: database\config maintenance Problem: Alias Names are saved using OEM character set instead of ANSI character set. Steps: -run bdeadmin - create an alias for any driver,with ansi chars like P'ALT-0192'R'ALT-0193''alt-0208'OX after saving the alias (applying), the alias name appears in ansi P'ALT-0192'R'ALT-0193''alt-0208'OX - closing bdeadmin and reopen it, the alias name will appear as 'PARADOX' Area: database\config maintenance Problem: Object | Version Information does not list BANTAM.DLL. Area: database\config maintenance Problem: Not sure where to log this, because it is a problem with BDE Administrator. The "hints" stay too long when manipulating the tree on the configuration tab. I have to wait for them to disappear (over 5 seconds) before I can click where I want. Resolution Request: I am running a Toshiba 460CDT at 800x600. I am using Small Fonts at 16 million colors. The video chip set is the Chips & Technology 65554 with 2MB of memory. Area: database\config maintenance Problem: When trying to modify parameters on a read-only .cfg file, msg. reads "error writing to system configuration file". Message should read "file is read-only" Area: database\core vcl Problem: Any Lookupfield in a DBGrid does bring the Dataset in editmode if we select a new value in a lookup field in the DBGrid, tough the Datasource.AutoEdit is set to False. This is false! It must check the Datasource.AutoEdit property is set correctly to go in editmode. Steps: 1. Create a new Application 2. Create a Master Table (Table1) and a DataSource (DataSource1). Set it to the DBDEMOS Alias and set its TableName to ORDERS.DB 3. Create a Lookup Table and a DataSource. Set its TableName to CUSTOMER.DB. 4. Add all Fields to the FieldEditor and create a new LookupField for the CustomNo-Field which returns the Lokup Tables Company Fieldvalue. 5. Set the AutoEdit Property of the Datasource1 to False, so we only can bring the dataset in editmode by explicitly set it with DataSet.Edit or Dataset.Insert. 6. Start the Application and try to edit any of the non Lookup Fields as OrderNr. This is not editable as it should be. OK. 7. Now open the DropDownList of our LookupFiled and select a new Value in it. Now the Dataset is in Editmode!!! This is absolutly false. Area: database\core vcl Problem: For some reason the precision seems to go down by TWO digits on an Extended after you've opened a connection through a TDatabase. See the code snippet in the Steps. Steps:
uses
DBTables;
procedure TForm1.Button1Click(Sender: TObject);
var
s : string;
e : Extended;
begin
s := Format('%18.9f',[555555555.555555555]);
ShowMessage(s);
with TDatabase.Create(Self) do
try
DatabaseName := 'XXX';
AliasName := 'DBDEMOS';
Open;
finally
Free;
end;
s := Format('%18.9f',[555555555.555555555]);
ShowMessage(s);
end;
Area: database\core vcl Problem: I have just noticed, that the DatabaseError Procedure in DB.PAS was changed to display the Dataset in which the error occurs. For debuging is this right, but for a final application it isn't. So all my Application displays now for any Field where the Required Property is set to True, the error "qryCustomer: Field ClientNo must have a value.". In D3 I get only "Field ClientNo must have a value." and this error is good also for the users of my applications. My Problem is now, that I can't see where I can set this error messages by me self. None of the Error-events is called for this error. I see no point where I can catch this error. The only solution I see, is to set all the Required-Properties in the Fields to False and then check all this Fields in the BeforePost event. Because this Required-Check is done before the BeforePost-Event the Required Property must be set to False. So the use of thuis property is absolutly useless. Area: database\core vcl Problem: TCustomActions that have a shortcut, but are not linked visual controls do not work correctly. Area: database\core vcl Problem: The disabling of dbedit linked to numeric fields (ie TCustomMaskEdits rightjustified), DBGrids, stringgrids, dblookupcomboboxes dblookuplists all these give NO visual clue where they are diabled or enabled The font color is always clInfoText, whether disabled or enabled. Steps: 1) do normal stuff with datasource, ttable 2) set active 3) connect these up to the following: a) a TDBGrid b) a numeric field to a TDBEdit c) a dblookuplistbox 4) now place a button on a form 5) add code to disable all the above controls by setting their Enabled property to false. 6) you will see NO visual clue as to whether these controls are disabled or enabled, YOU HAVE TO CLICK ON them to see that they are disabled. 7) a QD fix would be to set the font color to clGrayText when disabled and back to clInfoText when enabled. 8) in dblookupcomboboxes the bitmap on the dropdown button should also be grayed, when disabled. Area: database\core vcl Problem: LookupDataSet field of a LookupField is left blank during a build of the program. Area: database\core vcl Problem: TDataSetActions that are associated with a particular datasource are never enabled unless a data-aware component is associated with the datasource and set to visible. This particular problem manifested itself in an app where I use a query behind the scenes as a master to two detail tables. The master has nothing showing on-screen, the two detail tables do. I connected first,prior,next and last buttons to associated actions that are all connected to the query. The buttons are never enabled unlesss I connect a data-aware control to the query and make it visible. Steps: 1. Create a new project. 2. Add a TTable and TDataSource, connect them to each other and to the DBDEMOS table Orders.db. 3. Add an ActionList 4. Create a new Standard Action - TDataSetNext 5. Create a new Standard Action - TDataSetPrior 6. Create 2 buttons and connect them to Next and Prior actions. 7. Set Table1.Active to True 8. Add a TDBEdit and connect it to the datasource (don't pick a field). 9. Run the app and notice that the buttons work. 10. Now clear the DataSource property of the TDBEdit and run again - notice that the buttons don't work. 11. Try again with the DataSource connected to the DBEdit but with the DBEdit.Visible set to False - buttons don't work. Area: database\core vcl Problem: After a Locate is performed on a TTable, the AfterScrollRecord event is not called. If the locate returns a True, then call AfterScrollRecord. Area: database\core vcl\cached updates Problem: Cached Updates do not appear to be working in Delphi 4 using Paradox tables with TQuerys. Inserted records are not commited to the database after Apply/Commit updates are called. This Worked in Delphi 3. Workaround:
You can make the following change to
DBTABLES.PAS:
procedure TQuery.GetStatementHandle(SQLText:
PChar);
const
DataType: array[Boolean] of LongInt =
(Ord(wantCanned), Ord(wantLive));
begin
Check(DbiQAlloc(DBHandle, qrylangSQL,
FStmtHandle));
try
if not FExecSQL then
Check(DBiSetProp(hDbiObj(StmtHandle),
stmtLIVENESS,
DataType[RequestLive and not
ForceUpdateCallback]));
if Local then
begin
SetBoolProp(StmtHandle, stmtAUXTBLS,
False);
if RequestLive and Constrained then
SetBoolProp(StmtHandle,
stmtCONSTRAINED, True); // changed False to
True
SetBoolProp(StmtHandle,
stmtCANNEDREADONLY, True); // changed
False to True
end;
while not
CheckOpen(DbiQPrepare(FStmtHandle, SQLText))
do
{Retry};
except
DbiQFree(FStmtHandle);
FStmtHandle := nil;
raise;
end;
end;
Area: database\core vcl\cached updates Problem: For Oracle Tables: With Cached Updates ON, and an UPDATESQL component that updates the LONG filed, appending a record applying updates to a table with a LONG field results in an "invalid argument in oci call" error. Area: database\core vcl\cached updates Problem: Cached updates do not call TQuery.OnUpdateRecord Area: database\core vcl\lookup Problem: Issuing a Locate or Lookup on a datefield with a two digit year always seems to default to 19xx even if the variable "TwoDigitYearCenturyWindow := 50" is set. Note: Below follows a list of some failure results (listing the field or field combos which fail). Test Sql table Local table ----------------------------------------------------------------------- Query Date/Timestamp Date/Timestamp Table Date Date/Timestamp ClientDataSet Date Date Workaround:
The problem here is that the string is getting
converted into a date by the operating systems
variant conversion routines instead by the RTL
routines. The same problem will occur on any
method call or property which takes a variant. You
can force the RTL function to be used by modifying
the test case as follows:
if( Table1.Locate('Datefield',
StrToDate(Edit1.Text), []) ) then
Area: database\core vcl\lookup Problem: If TBDEDataSet.Locate causes BDE to generate a General SQL Error the error is eaten. Area: database\data access controls\tbatchmove Problem: Opening an ASCII text file with 200 char(50) fields will cause an AV in BDE. Steps: 1. Using LIBS, create a table that has 200 columns, each a char(50) 2. Fill the table, each record with 200 strings each 50 chars wide, basically filling the table to the max. 3. Batchmove this to a ASCII file on your harddrive. This will work fine. 4. Reverse the process, i.e. batchmove the ASCII file back into a new LIBS table. 5. Major IDE malfunction! Probably an AV that kills the IDE. Area: database\data access controls\tdataset Problem: BeforeScroll and AfterScroll events are not called when canceling an inserted record. Steps:
1. Create a new appl.
2. Place a TTable, TDataSource and a TDBGrid on
a form and connect this controls.
3. Connect the TTable to any existing table and set
it Active property to True
4. Asign a event to BeforeScroll and AfterScroll like
this:
procedure TForm1.Table1BeforeScroll(DataSet:
TDataSet);
begin
ShowMessage('BeforeScroll');
end;
procedure TForm1.Table1AfterScroll(DataSet:
TDataSet);
begin
ShowMessage('AfterScroll');
end;
5. Run the Application and move there to the last
record. Add a new Record here with the Down-Key.
You can see, that the BeforeScroll is called two
times. One time for the last existing record amd one
time for the new inserted record. This is false! the
BeforeScroll should only one time be called for the
new inserted record. If you insert a new record
somewhere inside the Datset, not at the end, the
BeforeScroll is only one time called. this is right.
6. Cancel the new Inserted empty record with the
ESC-Key.
You can see, that there is no Scroll-Event called.
this is false! The Before and AfterScroll evfents
should now also be called.
If you update something in the AfterScroll Event,
the controls does not reflect the correct value now.
This cancel-Behaviour is not only on the last record
as the BeforeScroll-Bug (pos. 6). The Before and
AfterScroll events are never called.
Area: database\data access controls\tdataset Problem: BeforeScroll and AfterScroll events are not fired on TTable.GotoCurrent. Steps: Have a form that uses a 2 tables and uses the AfterScroll Event of the first. Have a dialog that allows the user to search for a particular record. Use the following code: if Dialog.ShowModal = mrOK then table1.GotoCurrent (Dialog.table2); If you set a breakpoint in the AfterScroll Event you will see that it never gets called. Repeat test for BeforeScroll. Area: database\data access controls\tdbdataset Problem: In TBDEDataSet.CompareBookmarks, if DbiCompareBookmarks fails then no exception is raised and CMPEql is returned. Steps: Run attached and press button. It does: bk1 = getbookmark delete record (go to any other record) bk2 = getbookmark comparebookmark( bk1, bk2 ) always returns 0 (equal) Area: database\data access controls\tdbdataset Problem: The filter expression parser in Delphi 4's DBCOMMON unit does not process the UINT16 BDE logical type which is a perfectly valid integer type. This has changed from Delphi 2 and Delphi 3. Area: database\data access controls\tdbdataset Problem: The Locate function seems more restrictive than it was in Delphi 3. In Delphi 4, the loCaseInsensitive option matters even if the index only contains integer fields, which means that if the case sensitive option on the index does not match the TLocate options, the Locate is slow (non-index-based search is performed). Area: database\data access controls\tdbdataset Problem: Delphi 4's filter expression parser in DBCOMMON.PAS parses, without error, filter expressions that are invalid. Examples: '42' is parsed as a valid filter expression 'FieldName' is parsed as a valid filter expression (FieldName is the name of a field in the table that is NOT a boolean field). In both these cases, an invalid BDE filter data block is created and passed to the BDE. The BDE returns an "Operation not applicable" error (huh?). In Delphi 3 the parser would reject both of these filter expressions with error messages that were applicable. In my mind, both errors should be detected by the parser and Delphi 4 is wrong. Area: database\data access controls\tnestedtable Problem: Adding a new record to an existing standalone record/table results in the previous record being "lost" (no longer displayed, link is gone). Area: database\data access controls\tquery Problem: The Constrained property on TQuery is completely broken in Delphi 4. Steps: Setup a TQuery with select * from Animals t where t."size" < 10. Set Constrained to True. Edit the query and set the size on a record to 11 then try to post. Note that no error is generated. Area: database\data access controls\tquery Problem: Fixed Char parameter types are not bound correctly in Delphi 4 Update Pack 1. Steps:
1. Create a table with CHAR (10).
2. INSERT INTO TAB VALUES ('AAA')
3. Execute a parameterized query like
"SELECT * FROM TAB WHERE CHAR_FLD =
:NAME" binding NAME as ftFixedChar and passing
a value AAA.
4. You get an empty result set.
Workaround: When binding a parameter with ftFixedChar in DELPHI you need to call DbiQSetParams() with iFldType = fldZSTRING and iSubType = fldFIXED. Area: database\data access controls\tquery Problem: We need to bind CLOB and BLOB with their respective subtypes for parameter binding to work. Steps: Try executing a query like INSERT INTO CLOBTAB (F2) VALUES ( EMPTY_CLOB() ) RETURNING F2 INTO :P1 and you will notice the failure. Area: database\data access controls\tquery Problem: The Delphi debugger (all versions 16 and 32) appears to trap all SQL Errors where running the exe appears to open the TQuery example successfully without an exception being raised: Local Interbase example using alias "IBLOCAL": Project xxxxx.exe raised exception class EDBEngineError with message'Invalid modify request. conversion error from string "11"'. Process stopped. Use Step or Run to continue. dbi calls to execute the SQL statement and fetch a row do successfully raise the error. The only thing that these unraised errors seem to share is that customers have reported that the SQL Monitor shows them as "Unmapped SQL Errors"... Steps: Compile and run example app or use a Delphi TQuery to pass: 'SELECT * FROM SALES WHERE SHIP_DATE=(CAST(SALES_REP AS DATE))' to the IBLOCAL database. Run the app from Delphi and as a separate EXE in turn. The debugger will raise the "general sql error" whereas the exe will not. Area: database\data access controls\tquery Problem: The following SQL-Statement gives an "Capability not supported" error if it is used in a Live-Query on any SQL Server (tested on Informx and Interbase): Select * from kanton where kanton in (1,5,6) On a local DB as Paradox this SQL is executed fine. There are no errors and the Query is editable. In Delphi 3 it also does not work. In Delphi 1 this statement was executed without any error and it was also editable. Steps: 1. Add a TQuery to a Form 2. Setup the SQL-Satement with an IN (...) in the Where Clausle on any Server DB (Interebase) 3. Set the RequestLive property to True 4. Set the Active Property to True You get the error: "Capability not supported" The same procedure on a local DB gives no error and the dataset ist editable. Area: database\data access controls\tquery Problem:
It appears that everytime I apply an update to a
TQuery, the operation slows
down for each successive update. I have included
some code to test the speed
of cached updates, here is a snippet:
Note: src and dest tables have identical structures.
procedure TForm1.BitBtn3Click(Sender: TObject);
var i,count: integer;
begin
count := 0;
while ((not src.eof) and (count < 20)) do
begin
dest.insert;
for i := 0 to src.fieldcount - 1 do
dest.fields[i].assign(src.fields[i]);
dest.post;
Database1.applyupdates([dest]);
src.next;
inc(count);
end;
end;
Area: database\data access controls\tquery Problem: When a TQuery is used to execute a MSSQL stored procedure with a parameter of type Money, a server syntax error message is generated. This is because TQuery.SetParams is now (in Delphi 4) setting the iSubType for non-blob field types. Area: database\data access controls\tsession Problem: PrivateDir and NetFileDir are limited to 31 characters. Area: database\data access controls\tsession Problem: Deleting a TSession component does not remove any references to it via SessionName property of TDataBase or TDataSet components. Furthermore, an attempt then to set Database1.AliasName results in an AV in VCL40.bpl Area: database\data access controls\tsession Problem: It appears that if a TSession is destroyed, it does not let the connected TDataBase know this and when TDataBase gets destroyed, it calls TSession.RemoveDatabase causes an exception since the TSession is already destroyed. Area: database\data access controls\tstoredproc Problem: In Delphi 4, when trying to execute a stored procedure in a package on an Oracle 7.3.x server, if you have a procedure with more than one parameter and one of the parameters is a REF CURSOR, the procedure fails with the error ORA-1001 invalid cursor. If the only parameter to the stored procedure is a REF CURSOR then it works as expected. Workaround: Go into the params editor and give the ref cursor a default value of 0. Area: database\data access controls\tstoredproc Problem: Stored Procs convert CHARS to VARCHARS. This causes CHAR params to not work when connected via ODBC to an AS/400. Area: database\data access controls\ttable Problem: Opening a local table (Pdx, dBase or Access) with a secondary index specified is slower than when no index name is specified. Area: database\data access controls\ttable Problem: Right clicking on a TTable causes the Database to get connected. Steps: Drop a TTable. Hook it to a valid TDatabase Right click on the TTable notice the TDatabase is connected. Area: database\data access controls\ttable Problem: With Master/Detail TTables, if Refresh is called on the master, the detail is always repositioned to the first record. This is a regression from Delphi 3 and breaks applications. Area: database\data access controls\ttable Problem:
TQuery.Locate or TTable.Locate doesn't always
work on a date/time stamp field of a Paradox table.
Some date/time stamps are locatable others are
not.
There are similar problems with parameterized
queries when using a where clause, for example:
AQuery.SQL.Add('Select * From Items Where
(Stamp = :A_DateTime)');
AQuery.Params[0].AsDateTime := TheStamp;
Won't always return a dataset matching the
date/time stamp passed as a param. But again, it
works for some date/time stamps and not others.
Area: database\data access controls\ttable Problem: Cutting fields from the Fields Editor of a TDataSet, then pasting them back in causes their names to have a '2' appended. Steps: Add a bunch of TFields via the Fields Editor of a TDataSet. Cut some of them to the clipboard Paste them on to the end of a source file in the code editor Copy them from the tail of the source file back to the clipboard Bring up the fields editor and paste them -- whamo -- the names of the TFields themselves (what appears in the combo box in the OI) have a '2' appended to them for apparently no reason. Area: database\data access controls\ttable Problem: Doing a locate on a Table that has a range applied to it does not seem to behave consistently. Steps:
Put a Table a DataSource and A grid on a form.
Set the DataBaseName of the Table to Dbdemos,
TableName to Items.db. Wire everything else up as
usual
Put a Button on the form. and in a OnClick do the
following:
table1.setrange(['1060'],['1060']);
Table1.Locate('Partno','11518',[])
The record will NOT be found...
Change the locate to..
Table1.Locate('Partno','11518',[loCaseInsensitive]);
... and it will work.
Also the search...
table1.setrange(['1005'],['1005']);
Table1.Locate('Partno','7612',[])
... works fine.
Area: database\data access controls\ttable Problem: TTable.IndexDefs.Update is not aware of the primary key for Informix tables. Steps: . Area: database\data access controls\tupdatesql Problem: You can not update a MSAccess memo (long text field) with more than 255 characters using a TQuery and a TUpdateSQL with Cached Updates. It works with 255 characters or less. When you have 256+ you get a General SQL Error, "Invalid Property Value" when applying the update. Steps: Using the BDE Native Access Driver. Configure a TQuery to do a Select from an Access Table with a Memo Field within it. Set Cached Updates to True and attach a TUpdate SQL object to the Query. Configure the UpdateSQL object's SQL strings. Open the TQuery. Assign a string longer than 255 characters to the Memo Field. Post the Changes. Apply the Cached Updates. Error should occur. Area: database\data access controls\tupdatesql Problem: TUpdateSQL is tied to TBDEDataset Area: database\data aware controls Problem: Data-aware controls DoExit assume that on any exception, focus will still be on the original control. If the TFieldLink.Update cases a TField.OnValidate, then the user may move focus to other controls. If so, the OnExit may fail when it tries to Self.SetFocus. A fix would be to check the focused control in the "except" section of all data-aware control DoExit methods. Steps: In a TDBEdit Leave the control DoExit fires TFieldLink.Update UpdateRecord TField.OnVerify -- > Field value is dependent on other data -- > SetFocus to other controls [on another TabSheet] to show other data is bad -- > raise Abort to stop the TField from updating The DoExit code catches the exception (EAbort), does a Self.SetFocus, and dies because I have moved to another TabSheet so the original control is not showing. Area: database\data aware controls Problem: "Invalid use of keyword" is returned when trying to import a file which has only table selected (no fields selected ) Steps: SQL Builder 2. Select any database/table 3. File|Export test.sql 4. Import test.sql //error message// Area: database\data aware controls Problem: TDBEdit needs to put its TDataLink into Edit mode when an Undo operation occurs. Steps: Hook up a TDBEdit to some database field. Hook up a TDBNavigator. Make a change in the TDBEdit and notice that the navigator shows that the table is in edit mode. Now, click the post button on the navigator. Notice that the edit control has text that can be undone. From the edit's context menu, select Undo. Note that the table is not in edit mode. A change was made to the control, so to be consistent with the Paste and Cut commands which also potentially change the control's text, an Undo handler should be added. Area: database\data aware controls\tdbctrlgrid Problem: TDBCtrlGrid does not repaint correctly when the associated dataset is closed and reopened. Steps: Run the attached project and click the Open/Close button. Notice only the first panel paints until you scroll or force a repaint. Area: database\data aware controls\tdbedit Problem: It would be great to get a Data Aware DateTimePicker. Area: database\data aware controls\tdbgrid Problem: Unable to rearrange column position for a TDBGrid by dragging and dropping the columns in the colum editor, irrespective of persistent fields or not. This is a loss of functionality that was present in D3. Two grids connected to same DS could display columns arranged differently Steps: Create a TDBGrid. Add some columns from the TDataSource. Double-click the grid to edit columns. Try to rearrange column order by dragging. Area: database\data aware controls\tdbgrid Problem: DBGrid causes a EListError exception form when run if it's positioned/sized so a scrollbar is added to the form. Only happens in Japanese Windows. Steps: * Drop a DBGrid in a form * Move it to the right so a scrollbar appears on the form * Run // EListError exception Area: database\data aware controls\tdbgrid Problem: Nested dataset popup window shows up off to the right hand side of the screen Steps: Pop up a nested dataset window by clicking on the ellipsis in a DBGrid. Note the default position for the window. It's partially off my 800x600 screen. Area: database\data aware controls\tdbgrid Problem: DBGrid fails to honor the cursor property setting Steps: 1. Drop a TDBGrid on a form 2. Set the grid's cursor property to something other that crDefault. 3. Run the application and run the mouse over the grid - note the cursor does not change as it should. This worked fine under D3, looks like some messages are getting lost. Area: database\data aware controls\tdbgrid Problem: When the dataset in a subgrid is in an invalid state (as below), we should not allow the subgrid to be closed (use OnCloseQuery). Furthermore, if the dataset is in edit or insert mode, we should prompt the user to save changes before closing. Otherwise there is no way save the changes. If a user attempts to add a record a reference field without having set the tablename property of the refColumn, an appropriate error is displayed. But the error is not cleared, and any additional modification on the nested table or the parent cause the error to be displayed. It can only be cleared by closing the table. Area: database\data aware controls\tdbgrid Problem: Under some circumstances, edited field value from a 2nd field is being left in edit buffer after query is refired, so that first field shows up with 2nd field's value. Steps: Use dbExplorer, open DbDemos, Make LIve queries true, Select * from CUSTOMER Move horiz. scroll bar to right so that 2nd field appears in 1st position, edit 2nd field value, Post without moving off field. This causes edited value to be highlighted. refire query. If you enter numeric data for 1st field, Area: database\data aware controls\tdbgrid Problem: DBGrid isn't properly recognizing changes to the ReadOnly flag of underlying TFields. Changing ReadOnly on a group of TFields from True to False during an Insert doesn't allow those fields to be edited in the grid -- they're still readonly. Steps: Setup a grid with multiple fields, some readonly, some not Don't add TColumns In the BeforeInsert event of the underlying TDataSet, toggle the readonly property on the fields -- this works. In the OnDataChange event of a connected datasource, toggle them again, this does not work. In the debugger, the fields show that they're correctly toggled, yet they still can't be edited in the grid. Area: database\data aware controls\tdbgrid Problem: At design-time, a TDBGrid doesn't redraw itself to reflect a change to the DefaultDrawing property Steps: Set up some components so a DBGrid is showing a table's contents. Set the DefaultDrawing property to False There is no change in the grid Now minimise and restore the form designer The grid is drawn empty Area: database\data aware controls\tdbgrid Problem: DBGrid's Nested Dataset Child grid window displays off screen Steps: Create a 3-tier server with a master/client relation. Create a client with a DBGrid on the master. Compile/run client. Scroll to detail column. Drag form so detail colum is near right side of screen. dbl-click detail column to display detail grid. The grid runs off the right side of screen. Area: database\data aware controls\tdbgrid Problem: When Oracle 8 table has more fields than fit on 1 screen in grid, and focus is on last field, if you expand ADT's in the field headers, focus jumps to the first field. Steps: Open GRIDTAB2 on Oracle 8 server using SqlExplorer. Set Focus to last field, compress and then expand ADT's Area: database\data aware controls\tdbgrid Problem: If the data in a column in a DBGrid hangs off the right edge (i.e. there is not enough room for the whole column, so the text is truncated to fit), the rightmost column of pixels from the text fails to clear when the grid is scrolled left or right. Area: database\data aware controls\tdbgrid Problem: Changing the value of the Index property of a persistent field object does not cause the dbgrid to update, though the fields designer gets updated. On the second change of the index property, dbgrid gets the first change Area: database\data aware controls\tdbgrid Problem: TDBGrid component Lookup column don't take in mind ReadOnly property of TField. In some reasons it is necessary to have null value of "logical" field as Unchecked (not Grayed). To UncheckValue it is not possible to write null value (ValueMatch don't work). Solution is to UncheckValue write space " ". SetData works O.K. GetFieldState must check null as one space to compare. Contraint error in SetFieldData. When is set some DefaultExpresion then in procedure SEtFiledData is called dbiVerifyField when F.HasConstrains returns True and Tru returns even if has no constraints but have only DefaultExpresion. dbiVerifyField returns error if field is Dbase logical field and has f.exe. DefExpr True (False) Area: database\data aware controls\tdbgrid Problem: Columns Editor: Add all fields for table containing lots of fields. Scroll down to a field originally off screen, delete it using < delete > button. Highlight remains where it should be, on next field, but view is returned to top. Similar problem exists when you're on the second scroll page and you hit [Move_Up] or [Move_Down] Area: database\data aware controls\tdbgrid Problem: DBGrid always changes screen cursor to default cursor. Steps:
Place grid and button on a form. In the button enter:
procedure TForm1.Button1Click(Sender: TObject);
begin
if Screen.Cursor = crDefault then
Screen.Cursor := crHandPoint
else
Screen.Cursor := crDefault;
end;
Click the button. Move the move over the grid.
Notice how the cursor changes to the default
cursor.
Area: database\data aware controls\tdbgrid Problem: Can't drag and drop in Columns editor TDBGrid Steps: Drop a TDBGrid on a new Form Do NOT connect any datasource to it. Add some columns in columns editor of TDBGrid. Try to rearrange them via drag and drop. This worked in Delphi 3. Area: database\data aware controls\tdblookupcombobox Problem: CM_CANCELMODE message is not getting called when grabbing the title caption and moving the window or when resising the window. Steps: Place a TDBLookupCombo or a TDBLookupComboBox on a form, connect if needed, then drop down the drop down, and then grab the forms title and move the window or try to resize the window. The drop down does not close and it should. Tried on Win98 and NT 4.0 < < But on WIN95 this is a problem. Area: database\data aware controls\tdblookupcombobox Problem: DBLookupComboBox does not respond to mouse wheel support. Area: database\data dictionary Problem: Importing an Oracle 8 table (with an Array Field Type or ADT field Type) into the sample dictionary adds a '[0]' field (for array elements) and member fields (for ADT members) Steps: - Import ZOMBIE.ADDRBOOK into sample dictionary - Expand Dictionary/OraAlias/Tables/Zombie.Addrbook/Field s // Note the Member fields Area: database\data dictionary Problem: Creating dictionaries on interbase is much slower than other servers with similiar information. Area: database\data dictionary Problem: There is no way to know how long it will take to import a dictionary into SQL Explorer. Area: database\data dictionary Problem: When a new data dictionary is created its language driver is always set to ANSIINTL. It should pick up the language driver from the alias where the dictionary is created to avoid character set conversion problems. Steps: 1) Create a new data dictionary through DbExplorer 2) Open the dictionary and see that the language is set to ANSIINTL. It is not possible to change this via DbExplore Area: database\data module Problem: Cannot compile project when a Remote Data Module is named 'as'. The wizard does not prevent user from naming it that way. Steps: - File | New Application - File | New...Remote Data Module - Enter 'as' for ClassName - Click OK - Compile // Errors Area: database\database tools\bde admin Problem: When running Japanese Windows 95, BDEAdmin may generate an AV or Stack Overflow if using a .CFG file that contains high ASCII characters that will be interpreted as double byte characters with illegal lead byte. Area: database\database tools\bde admin Problem: Duplicate pick-letters in context-sensitive Object menu of BDE Administrator. recommended solution: Menu-point: Schließen (2nd menu-point) Change pick-letter from 'c' to 'S'. Menu-point: Versionsinformation Change pick-letter from 'v' to 'o'. Area: database\database tools\bde admin Problem: BDEADMIN crashes when the machines memory is totally out. Workaround: No workaround. Area: database\database tools\bde admin Problem: When BDE Admin is used to add an alias with a driver developer with the DDK, the default alias name is ODBCn. The name should be the driver name instead of ODBC. Area: database\database tools\bde admin Problem: When "Save for use with" | "Windows 3.1 Win95/NT" is chosen in the "Options" menu changes to the System and Driver settings are saved to the Config file but do not appear to be read from the config by the 32bit BDE. This problem was reported by a customer that found that resetting the SHAREDMEMLOCATION (to fix the "insufficient memory for this operation" error when launching two 32bit apps on NT) did not take affect until making the change to the registry. Area: database\database tools\bde admin Problem: Translation of BDE Admin string with ressource id 65128 is not exact. The English string: All BDE applications must be restarted for changes to take effect. is translated as: Um die Änderungen anzunehmen, muss die BDE-Applikation neu gestartet werden. a better translation would be: Um die Änderungen anzunehmen, müssen alle BDE-Applikationen neu gestartet werden (the actual translation uses singular, the correct translation is in plural) Area: database\database tools\bde admin Problem: As of BDE 5.0, the minimum Oracle client BDE supports is Oracle 7.3, yet Vendor Init in BDE Admin lists ORA72.DLL. Area: database\database tools\bde admin |