PB Technical Questions

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 11

Powerbuilder interview questions_part1

1. How do you pass parameters when opening a window?


Use OpenWithParm method () and accessing the three system
message object properties:
Message.DoubleParm
Message.PowerObjectParm
Message.StringParm
The parameters are stored in the Message object.

2. What are the different status’s a row can have in a DW and what
function do you call to find the status?
The 4 DW Statuses:
1. Not Modified – the information in the row/column is unchanged
from what was retrieved.
2. Data Modified – the information in a column or one of the
columns in the row has changed since it was retrieved
3. New Modified – the row is new and values have been assigned
to columns. (Changes are primarily due to user entry or by using
the setitem () method)
4. New – the row is new and values have not been specified to
columns.

a) All are applicable to rows but only 1 & 2 are applicable to


columns.
b) Getitemstatus () can be used to find the data window status

3. What is the purpose of using the SUPER keyword?


It is used to refer to an object’s immediate ancestor. Take for
example Super: wf_myfunc (myarg1, myarg2). This example calls
the ancestor function wf_myfunc (presumably the descendant also
has a function called wf_myfunc). This example must be part of a
script or function in the descendent window, not one of the
window's controls

4. What is a dynamic data window? Give an example of why you’d


need to use a dynamic data window.
It is a data window that is modified or created during runtime.
CREATE method can be used to create or replace the current DW
object in the DW control with the newly created DW.
Settransobject () needs to be reset with the new DW in the control
since the earlier association would have been destroyed.
5. If you were experiencing a GPF in your application, how would
you go about tracking it down?
a) Check library search path in development, required DLL’s,
PBL’s in runtime etc
b) If PFC is used, check that the PB version is exactly the same as
PFC version, i.e. 5.0.04 etc
c) Use DLL tracking utility to check executables DLL list
d) Enabling the PB Debug Tracing information and find the last
line of code that executed prior to the GPF.

6. Name some of the PFC services.


a) Application (debugging, error message, security)
b) Data window (filter, linkage, print preview, resize, sorting)
c) Window (menu, resize, file, metaclass)

7. What is the difference between ItemError () and DBError ()?


ItemError () occurs when the data supplied to a particular column
in a table fails some validation rules. For example a DW column
designed to accept only integer values throws this error if a string
value is passed. DBError () occurs when
INSERT/UPDATE/DELETE/RETRIEVE fails. When it occurs,
the DW Control throws up a message box describing the error to
the DBMS. The user can also get the appropriate error code and
throw up message boxes.

8. What is a data store? What type of events does it support/not


support?
It is a non-visual data window. For example if you want to retrieve
data from a table without showing it, then you can go for data
store. It does not support clicked events but supports deleterow (),
insertrow (), retrieve () and update (). It also supports ItemError ()
event.

9. As an extension of (8) above, mention two differences with data


windows
a) A DW can be designed such that the user is prompted to enter
the parameters for data retrieval while this not possible with data
store. If the user calls the RETRIEVE method for a DW control,
the DW object expecting an argument, if the user leaves it blank, it
prompts the user to enter an appropriate value, this behaviour is not
supported in data stores
b) The PRINT Set-up dialog box for setting print specifications is
not possible in data stores

10. Explain the following terms: Regeneration, Optimisation &


PBD
a) Regeneration – when you modify an ancestor object, you can
regenerate descendants so they pick up the code changes to the
ancestor.
b) Optimisation – it is the process of compressing library objects; it
removes gaps in libraries and defragments the storage of objects,
thus improving performance. Optimising only affects the layout on
disk and not the contents of the objects. Objects are not
recompiled. For best performance libraries should be optimised
once a week.
c) PBD – DW objects are stored in PBLs that are converted to
PBDs thereby providing runtime versions of DW objects.

11. When do you use a data pipeline?


If the user wants to copy DB objects from one database to other or
copy from one DBMS to another, the data pipeline can be used.
The file can be exported from one database and imported to the
target database. In the Data Pipeline painter you define a data
source, source database, target database, retrieval arguments,
unions, sorting, selection, and grouping criteria.

12. Explain and differentiate between settrans () and settransobject


()?
While using settrans () the user need not specify an explicit
CONNECT or DISCONNECT statement in the script since PB
internally calls them whenever required. As part of internal
transaction management of DW controls, when the DW needs to
access the DB, the DW control issues an internal CONNECT,
performs data access and then issues an internal DISCONNECT.
Settransobject () is used when the user goes for a separate
transaction object (example SQLCA) or creates a separate one in
the script. The sequences of statements are as follows:
Transaction tra_1
tra_1 = CREATE transaction
tra_1.DBMS = “ODBC”
tra_1.database = “myDB”
CONNECT using tra_1
Dw_1. Settransobject (tra_1)
Dw_1. Retrieve ()

13. Explain the components of ODBC architecture


a) Application – any front end/GUI from where ODBC calls are
made
b) Driver Manager – it is a DLL that controls loading of
appropriate drivers to connect to DBMS. When an ODBC call is
made, it scans the *.ini files to determine which driver to use
c) Driver – it is the heart of ODBC that takes care of N/W
protocols to connect to the data source; it also submits SQL
statements to the data source
d) RDBMS – an ASCII file containing information such as DBMS
name, login/password etc

ODBC takes care of locating the Sybase/SQL server address on the


network by reading the win.ini/sql.ini files

14. Explain the “Connect String DBParm” parameter in


PowerBuilder.
It specifies the parameters required to connect to an ODBC data
source. PowerBuilder uses these parameters to connect to the
database. The syntax is
Connect String = 'DSN = data_source_name; {UID = user_Id;
PWD = password; driver_specific_parameters}'
PowerBuilder generates the Connect String automatically when
you define an ODBC data source and copies it to the DBParm box
in the Database Profile Set-up dialog box. This happens before you
connect to the data source in PowerBuilder.

15. Which are the PFC class libraries in PowerBuilder?


PFC is a combination of reusable and extendible classes and
framework. The 8 libraries are:
a) pfcmain.pbl – basic services
b) pfcapsrv.pbl – application
c) pfcdwsrv.pbl – data window
d) pfcwnsrv.pbl – window
The 4 extension layer class libraries are pfemain.pbl, pfeapsrv.pbl,
pfedwsrv.pbl & pfewnsrv.pbl. 2 more security related libraries
(with no extension layers) are pfcsecad.pbl & pfcsecsc.pbl

16. When should internal transaction management be used?


It can be used if the number of connections to theDB are limited
and also for pure retrieval when COMMIT & ROLLBACK are not
application priorities.

17. Explain the different types of data sources that can be linked to
data window controls
a) Quick Select – Used when data comes from one or more tables
linked by a foreign key.
b) SQL Select – In addition to above grouping & computed
columns can be specified
c) External – the data can be imported from a flat file or populated
from the code. ( for example using setitem() methods)
d) Query – used when the data source (SQL statement) is saved in
a query object defined in the query painter.
e) Stored Procedure

18. Explain how the Auto Commit property works in PB


When the Auto Commit property is set to FALSE (default) or 0,
PB issues SQL statements inside the scope of a transaction.
1(TRUE) implies statements outside the scope of a transaction (for
example when your application requires creating temporary tables).
a) If you want to execute stored procedures containing DDL
(CREATE, ALTER, DROP etc) statements, then Auto Commit =
TRUE.
b) If Auto Commit = TRUE, then rollback cannot be issued, it
should be set to FALSE after completing the DDL operation.
When Auto Commit is set from FALSE to TRUE, then PB issues a
COMMIT statement by default.

19. Explain the steps to update a multi-table DW in PB


The following steps are involved in the process:
a) Use. modify/.object notation to make ONE table updateable
b) SET the primary keys for the table
c) Perform DW_1 update with FALSE argument for the reset
option in the Update() function
d) After © is successful, make 2nd table updateable and 1st table
not updateable
e) Next call update() with TRUE argument for the the reset option
in the Update() function
f) COMMIT/ROLLBACK depending on success or failure

20. What is a DWChild object? Name two events associated with it


A dropdown DW is aDWChild. For example a DW object that
populates a column having the dropdown DW edit style is
aDWChild object. It does not have any events associated with it.

21. Explain multi-byte support for PB


PB 8 supports both ANSI and double-byte character sets (DBCS);
any PB8 application runs in a DBCS environment. In a DBCS
environment 1 character = 2 bytes as opposed to 1 byte in an ANSI
environment. For example we may need to change the width of a
column of type char (40) to char (80).
The wide version of the Len () function (called Lenw ()) should be
used since the former returns the number of bytes while the latter
returns the number of characters.

PowerBuilder can access Unicode data in an ASE 12.5 Unicode


database or in Unicode columns in ASE 12.5. PowerBuilder
converts between double-byte character set (DBCS) data and
Unicode automatically, provided that the Locale parameter is set
with DBCS values. For example, the Locale DBParm should be set
to chs or cht.

22. Explain the three methods of passing arguments to


functions/events in PB
a) By Value – a copy of the variable is passed. Any changes to the
value of the variable will affect the copy only, the original variable
in the calling script is not affected
b) By Reference – a pointer to the variable is passed to the
function/event. Any changes affect the original variable in the
calling script
c) READ-ONLY – a copy of the variable treated as a CONSTANT
is available to the function/event

23. Differentiate between instance and shared variables in PB


a) Instance variables are created when the object is created and
destroyed when the object is destroyed while a shared variable is
created when the FIRST instance of the object is created and is
destroyed when the application is closed
b) The value of an instance variable in each instance is independent
of its value in other instances while changing the value of a shared
variable in one instance will affect other instances

24. Mention some features of N-Up, Composite & CrossTab DW


presentation styles
a) N-Up: two or more rows of data displayed next to each other
across the page. It is useful for periodic data such as data for each
day/week or each month in the quarter
b) CrossTab: - provides a data summary in a row and column
format. Data to be selected from one or more tables, DW cannot be
external. Crosstab functions can be used for filters, validation rules
or computed fields
c) Composite: - it consists of one or more nested reports. It also
serves as a container for other reports and has no data source of its
own. The user can specify one DW object to be shown on screen,
as many reports as the number of DW objects can be viewed on
screen based on the retrieval arguments specified by the user

25. Explain some performance considerations that you as a


developer would like to review while designing client/server
(PB/Sybase) applications
An important consideration is the usage of COMMIT/CONNECT
statements to maximize performance and limit locking and
resource use. Two design considerations that should be taken care
are:
a) Long running connections – if these are NOT acceptable then
the application should connect to the database only when
necessary. If acceptable then COMMITs should be issued as often
as possible so that the changes do in fact occur. More importantly
COMMITs should be issued to release any locks placed on DB
entities as a result of statements executed during the transaction
b) Settrans/Settransobject function – if the application functionality
requires connections to be kept open and issue periodic COMMITs
then Settransobject () should be used or use Settrans () for many
short-lived transactions

26. Explain the usage of Settransobject function with composite


DWs
Only this function should be used for composite presentation styles
acting as containers for other DW objects. If settrans () is used with
each DW in a composite DW then disconnect does not occur until
PB session ends. It should be used only for pure retrieval when DB
locks need not be held on tables in other words update () functions
are not used.

27. Explain function overloading with an example


It is a feature in PB where a function is defined with the same
name as another. The two functions may differ in the number of
arguments and also the type of arguments. An example is the
Messagebox () function.

28. Explain the two classes of PB user objects and their sub types
Uos are custom visual objects that you can build to supplement
standard PB objects. UOs can request/display information and
respond to mouse or keyboard actions and create a tab page UO.
a) Visual UO – a reusable control/set of controls. For example a set
of buttons to function as a unit having scripts associated with them
for standard processing. Three types are:
1. Standard – inherited from a specific visual control. For example
command button/checkbox etc
2. Custom - inherited from the userobject system class. You can
include many controls in the UO and write scripts for these events.
3. External - it is a UO that displays a visual control defined in a
DLL.
b) Class UO – they consist of properties, functions, and events with
no visual components.
1. Standard – inherited from a NV PB object such as a
transaction/error object, which can have instance variables and
functions.
2. Custom – an object of your own design for which you define
variables, events and functions in order to encapsulate application-
specific programming in an object

29. How do you change the SQL statement of a DW at run-time?


It can be done by linking the DW control to modify () function or
using “. Object” notation

30. Can you use an array as an argument to the DW’s Retrieve ()


function?
Yes, it can be used when your DWs data source contains a Select
statement with an IN clause.

31. Application functionality would like to allow the user to print


selected rows. How is this done?
You can copy the selected rows to a data store or a hidden DW
control using rowscopy () and print the data store or hidden DW
control

32. Explain the DW validation rule


If the data in a column has changed, it checks for the correctness of
the value (both data type and data value) in the primary buffer.
Wrong data type or data value will trigger the itemerror () event. If
the data is correct it triggers itemchanged () event, which if it
returns ZERO, triggers itemfocuschanged () event.

33. Explain the following error: “Rows changed between retrieve


and update”
It occurs when a user updates the data before you update it. PB
detects it when you include the timestamp column in the DW or
use “key and updateable columns” in the WHERE clause. The
solution to the problem would be to use the reselectrow () function
to reselect the row that caused the error and get the latest values for
the error row and update the DB again.

34. What is the difference between a computed column and a


computed field?
The former is defined as part of the SELECT statement, (for
example sum, avg etc) whose values are calculated by the database,
while in the latter the PB client calculates the values. If it is a fat
client then computed fields are recommended, else for thin clients
it is computed column.

35. If the application needs to display rows as soon as they are


retrieved, what should be done?
Write code in the retrievrow () event and also set the asynch
attibute in the DBParm property in the transaction object

36. How would you retrieve multiple result sets in a single DW?
A DW can retrieve only one result set at a time. To retrieve other
result sets, you can change the result set number either by modify
() or using object notation making sure the number of columns and
data types match the existing DW definition.

37. What is the event from which I can see the exact SQL
statement sent to the DB by PowerBuilder?
SQLPreview ()

38. How can you update a DW that has a stored procedure as a data
source?
It can be done by going to the update properties in the DW by
selecting Rows/Update properties from the menu in the design
mode in the DW painter. The tables to be updated can be selected.

39. What are the different types of windows in PB?


They are main, popup; child, response, MDI frame, and MDI frame
with microhelp.

40. If you create a response window and open that window in an


MDI frame using opensheet (), what would happen?
When you open a window in a MDI frame using opensheet () or
opensheetwithparm () the window gets the sheet properties
irrespective of the window type. If a response window is opened
using the above functions the window will behave like any other
sheet having maximise, minimize, close controls etc

41. What is the difference between triggerevent () and postevent


()?
The former executes the specified event’s script right away while
the latter posts the request in the operating system’s message queue

42. How can I find out if the PB application is connected to the DB


or not?
Use the Dbhandle () function

43. Name three PB pronouns used to reduce hard coding


This, parent, parentwindow & super

44. Differentiate between parent & parentwindow


Parent refers to the PB object where the current object is placed.
For example parent in a command button’s script will refer to the
window in which the command button is placed. Parentwindow is
used to refer to the window for which the current menu is attached

45. I have a window, which has a menu, associated with it. For
some reason I have deleted the menu and I am getting any error
while trying to open the window. What needs to be done?
Export the window as a SRW and look for the menu name in the
file. Once found the menu can be created again and linked to the
source window.

46. Explain the different types of embedded SQL that can be used
in PB scripting
Given below are the SQL statements in scripts that are possible
with Sybase ASE:
a) Transaction Management statements – CONNECT, COMMIT,
ROLLBACK and DISCONNECT are used to manage transactions
in ASE. If a trigger fails, then a RAISEERROR should be issued in
the trigger and not ROLLBACK. PB has got a DBMS specific
return code (SQLDBCode = -1) within the transaction object which
can be used to throw messages to the user.
b) Non-cursor statements – INSERT/UPDATE/DELETE/SELECT
c) Cursor statements – the user can retrieve ( declare, open, fetch &
close cursors) and issue update( update & delete cursors)
d) DB Stored Procedures – they can be used for retrieve, update or
both. To execute DDL statements the AutoCommit must be set to
TRUE (1), but if it is TRUE, ROLLBACK cannot be issued, hence
after completion of the DDL operation it must be set back to
FALSE.

47. What is DDE? Which PB object has DDE related events


associated with it?
DDE stands for dynamic data exchange by means of which two
applications can talk to each other and exchange data between
them. Examples are RemoteExec & RemoteSend. A PB window
has DDE events associated with it

48. Explain the concepts of embedding and linking


When you embed an object it is saved as part of the OLE container
object i.e. any changes to the actual object will not reflect in the
embedded object. In case of Linking the original object resides
where it was and link information is stored in the OLE container
object i.e. any changes to the actual object will reflect in the OLE
container object. OCX is an OLE control that implements the
component-based architecture.

49. Explain enumerated data types in PB


Enumerated data types are specific to PowerScript. They are used
as arguments in functions and also to specify the properties of an
object or control. A variable of one of the enumerated data types
can be assigned a fixed set of values. For example, the enumerated
data type Alignment, which specifies the alignment of text, can be
assigned one of the following three values: Center! Left!, and
Right!:
For example mle_edit.Alignment=Right!

50. Explain the concept of inheritance in PB


It is a feature that enables you to build windows, user objects, and
menus that are derived from existing objects. When you change an
ancestor object, the changes are reflected in all the descendants and
the descendant inherits the ancestor's scripts. Two main features to
be noted here are:
a) Descendant objects - In PB, an object class can be inherited
from another class. The inherited or descendent object has all the
instance variables, events, and functions of the ancestor. You can
augment the descendant by adding more variables, events, and
functions. If you change the ancestor, even after editing the
descendant, the descendant incorporates the changes.
b) Instantiating - When you instantiate a descendent object,
PowerBuilder also instantiates all its ancestor classes. You do not
have programmatic access to these ancestor instances, except in a
few limited ways, such as when you use the scope operator to
access an ancestor version of a function or event script.

You might also like