Congratulations on getting to work in a great environment!
Powerbuilder (PB) is an Object Oriented, Event Driven, Graphical User Interface (GUI) environment primarily geared for client / server applications. PowerBuilder uses its own language, called PowerScript. Powerbuilder is considered a 4th generation language. (C++ and Java are considered 3rd generation languages.) With Powerbuilder, you get the object oriented power of the 3rd generation languages along with the GUI front-end of 4th generation languages.
1. Powerbuilder's first true strength is an object called the "Datawindow". It will be important for you to learn how to truly use this object and its related control, the datawindow control. If you become a good programmer
who understands Powerbuilder, you should almost never have to embed SQL in your Powerbuilder applications, as there is virtually no need. Datawindows allow you to encapsulate your SQL (along with a display format) into an object that can be used throughout your application.
2. Powerbuilder's second major strength is that it is truly object-oriented - Inheritance, Polymorphism, Encapsulation. In Powerbuilder, Learn how to create your own classes and inherit from them, making your programs much more robust and often easier to maintain.
3. Powerbuilder's third major strength is that it can connect to most databases. Unlike vendor specific tools, Powerbuilder allows the developer the freedom to develop on any database and often through native drivers. (Much faster, more stable, and better than using ODBC connections, for example.) For example, I created one application for an Access database and was able to place it directly onto an Oracle database without making 30 minutes worth of changes. Had I used embedded sql, this task would have taken weeks.
There is no other environment that I have used which even comes close to Powerbuilder in client/server. VB is not object oriented (no inheritance, though VB.Net makes claims that it now has that capability) and does not have near the database manipulation power that Powerbuilder provides. However, if you have used VB before, then you will be familar with some of the standard controls found in Powerbuilder. Java and C++ may provide a bit more flexibility, performance, and fewer limitations but the design and maintenance costs would be extremely higher than a 4th generation language like Powerbuilder.
PB Books and Tips:
1. Make sure PowerBuilder's "ONLINE BOOKS" are installed onto your work computer! This will become your life's blood.
2. Utilize the software package that comes with the PB software (if purchased) called "Infobase". Infobase will provide you with a lot of great examples of how to implement your code.
3. Get some good PB books and get old issues of Powerbuilder Journal Magazine. You did not say which version of PB you will be using. There were some changes with the interface from version 6.5 to 7, but there is an incredible amount of changes from 7 to 8. You should get a basic fundamentals book and any of the unleashed books. Start off with the basic book and graduate to the unleashed. (Go to amazon.com and type in powerbuilder to get a list of available books.)
Amazon or Book Pool
4. Learn your datawindow - Know your datawindow - Love your datawindow. There is an entire book devoted to the datawindow in powerbuilder - get it. :)
5. Once you have the fundamentals down, begin learning the proper techniques for implementing good Object Oriented Programming. Learn to create user objects, custom user objects, and non-visual user objects. Inherit from those user objects rather than recreating a new controls like VB programmers typically do. (Powerbuilder is only object oriented if the programmer codes that way!)
6. Graduate into learning Powerbuilder's PFC's (Powerbuilder Foundation Classes) and using "Services".
7. Did I say Know your datawindow?
8. Know your SQL. Powerbuilder offers a nice GUI interface for creating your SQL statements for your Datawindows but it is always best to know how to do it yourself.
9. Check your local junior colleges for courses on Powerbuilder.
10. SHIFT-F1 in the script painter brings up Help. Learn how to use it!
Good Luck and Welcome to Powerbuilder.
Source : Tek-Tips Community
Jun 22, 2012
Powerbuilder - Open Window As String
Example for open window as string.
string ls_name
window lw_sheet
ls_name = "w_customer"
open(lw_sheet,ls_name)
As simple as that.
Cheers..
string ls_name
window lw_sheet
ls_name = "w_customer"
open(lw_sheet,ls_name)
As simple as that.
Cheers..
May 10, 2012
Javascript round() Method
function roundNumber(num, dec) {
var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
return result;
}
and then write code something like this :
roundNumber(dec_number,2)
As simple as that!
Cheers..
var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
return result;
}
and then write code something like this :
roundNumber(dec_number,2)
As simple as that!
Cheers..
May 3, 2012
Simple Query to Calculate FIFO
I assume that you have table below :
tbl_purchasing
-------------------------------------------------------------------------------------
purchase_number - item_id - date_purchase - unit_cost - qty - last_qty
-------------------------------------------------------------------------------------
001 - A2 -11/11/2012 - 1000 - 120 - 50
002 - A2 -11/11/2012 - 1100 - 100 - 100
003 - A2 -13/11/2012 - 1350 - 10 - 10
-------------------------------------------------------------------------------------
Note : last_qty is available qty to sale. In this case, it mean 70 was sold.
Sample case :
at 14/11/2012 we need to input sales invoice with item A2 and qty = 152.
How to calculate price using FIFO method?
Aha! as easy as you think.. :p lol
A simple query will solve that :
just change 40,A2 into variable and ..
Done!
Very simple, even dont need to create func,proc,trigger, whatever..
Juat a simple single query!
Created by me with some reference from stackoverflow.com
Enjoy..
Cheers!
Note : tested in mysql not sure run in another..
tbl_purchasing
-------------------------------------------------------------------------------------
purchase_number - item_id - date_purchase - unit_cost - qty - last_qty
-------------------------------------------------------------------------------------
001 - A2 -11/11/2012 - 1000 - 120 - 50
002 - A2 -11/11/2012 - 1100 - 100 - 100
003 - A2 -13/11/2012 - 1350 - 10 - 10
-------------------------------------------------------------------------------------
Note : last_qty is available qty to sale. In this case, it mean 70 was sold.
Sample case :
at 14/11/2012 we need to input sales invoice with item A2 and qty = 152.
How to calculate price using FIFO method?
Aha! as easy as you think.. :p lol
A simple query will solve that :
set @param:=40;
set @counter:=40;
select purchasing.purchase_number, purchasing.sisa,purchasing.unit_cost,
case when @param <= purchasing.sisa then @param else purchasing.sisa end * unit_cost harga,
@param := @param - purchasing.sisa as sampah_masyarakat
from
(
select doc_id,sum(last_qty) sisa,unit_cost
from tbl_purchasing
where item_id = 'A2'
group by unit_cost
order by date_purchase,purchase_number
) purchasing
having (harga > 0)
just change 40,A2 into variable and ..
Done!
Very simple, even dont need to create func,proc,trigger, whatever..
Juat a simple single query!
Created by me with some reference from stackoverflow.com
Enjoy..
Cheers!
Note : tested in mysql not sure run in another..
Jan 16, 2012
Replace string function
Sample : f_replace(powerbuilder,r,s) will return powesbuildes
f_replace(string as_text,string as_before,string as_after) returns string
integer li_Posisi
string ls_return
li_Posisi = pos(as_text,as_before)
do while li_Posisi > 0
ls_return += mid(as_text,1,li_Posisi - 1) + as_after
as_text = mid(as_text, li_Posisi + Len(as_before))
li_Posisi = pos(as_text,as_before)
loop
ls_return += as_text
return ls_text
f_replace(string as_text,string as_before,string as_after) returns string
integer li_Posisi
string ls_return
li_Posisi = pos(as_text,as_before)
do while li_Posisi > 0
ls_return += mid(as_text,1,li_Posisi - 1) + as_after
as_text = mid(as_text, li_Posisi + Len(as_before))
li_Posisi = pos(as_text,as_before)
loop
ls_return += as_text
return ls_text
cheers..
Export Datawindow to Excel
Export Datawindow to excel files without dw2xls
First, create a global function
f_excel(datawindow idw)
int li_rtn
string xlsname,nama, ls_alamat
//Check for row(s) in datawindow
if idw.rowcount( ) <= 0 then
messagebox(' Export Excel','No rows to export!')
return
end if
//excel file save directory
li_rtn = GetFileSaveName( "Select File", &
xlsname, nama, "", &
"Excel 97-2003 Workbook(*.xls) ,*.*,")
if idw.saveas( xlsname+'.xls' , htmltable!, TRUE ) = -1 then
MessageBox(" Warning", "error!",Exclamation! )
return ;
end if ;
oleobject excel ;
excel = create oleobject ;
if excel.connecttoobject(xlsname+ '.xls' ) = 0 then
Excel.Application. DisplayAlerts = false ;
Excel.Application. Workbooks( 1 ).Parent.Windows
Excel.Application. workbooks( 1 ).Name ).Visible true ;
Excel.Application. Workbooks( 1 ).SaveAs(xlsname+ '.xls', 39 ) ;
Excel.Application. Workbooks( 1 ).close() ;
messagebox(' Export Excel','datawindow exported succesfully!')
run("c:\windows\ explorer. exe "+xlsname+'. xls')
end if ;
destroy excel
First, create a global function
f_excel(datawindow idw)
int li_rtn
string xlsname,nama, ls_alamat
//Check for row(s) in datawindow
if idw.rowcount( ) <= 0 then
messagebox(' Export Excel','No rows to export!')
return
end if
//excel file save directory
li_rtn = GetFileSaveName( "Select File", &
xlsname, nama, "", &
"Excel 97-2003 Workbook(*.xls) ,*.*,")
if idw.saveas( xlsname+'.xls' , htmltable!, TRUE ) = -1 then
MessageBox(" Warning", "error!",Exclamation! )
return ;
end if ;
oleobject excel ;
excel = create oleobject ;
if excel.connecttoobject(xlsname+ '.xls' ) = 0 then
Excel.Application. DisplayAlerts = false ;
Excel.Application. Workbooks( 1 ).Parent.Windows
Excel.Application. workbooks( 1 ).Name ).Visible true ;
Excel.Application. Workbooks( 1 ).SaveAs(xlsname+ '.xls', 39 ) ;
Excel.Application. Workbooks( 1 ).close() ;
messagebox(' Export Excel','datawindow exported succesfully!')
run("c:\windows\ explorer. exe "+xlsname+'. xls')
end if ;
destroy excel
Sample usage : f_excel(dw_customer)
Cheers..
Jan 15, 2012
Keycode to string
With most objects, you can trap the key strokes using user events.
For example, on a datawindow object,
you can create a user event using Event Id = pbm_dwnkey.
In this event, you'll find a parameter of type keycode.
This is a predefined enumerated data type with values such as KeyA!, KeyB!, etc.
But if you want to convert this value to a string,
you'll find your choices are limited.
It looks something like this :
choose case a_key
case keyA!
ls_string = "A"
case keyB!
ls_string = "B"
case keyC!
ls_string = "C"
...
end choose
As simple as that!
Cheers..
For example, on a datawindow object,
you can create a user event using Event Id = pbm_dwnkey.
In this event, you'll find a parameter of type keycode.
This is a predefined enumerated data type with values such as KeyA!, KeyB!, etc.
But if you want to convert this value to a string,
you'll find your choices are limited.
It looks something like this :
choose case a_key
case keyA!
ls_string = "A"
case keyB!
ls_string = "B"
case keyC!
ls_string = "C"
...
end choose
As simple as that!
Cheers..
Subscribe to:
Posts (Atom)
Are legacy 4GL applications keeping you from embracing modern technologies?
As the competitive advantages offered by cloud, mobile, and other new technologies become more apparent, the decision to migrate legacy 4GL ...
-
1. Create a Response window named w_msg with 1 static text and 3 command button. 2. w_msg event open string ls_data,ls_parse inte...
-
Export Datawindow to excel files without dw2xls First, create a global function f_excel(datawindow idw) int li_rtn string xlsname,nama,...
-
1. Create Window, Datawindow and controls 2. Create A sample menu 3. Create window function public function boolean of_extr...