How to get Database information properly to JTable...

Hi!
Sorry to bother with this kind of stupid question but I thought I'd ask someone for help in here...
The case is that I'm trying to learn the use of Swing components at the moment, and I had this strange idea of trying to add my databases to this study. So, I started testing with the sample codes included in java.sun.com's pages...
I got the data from the database to Jtable. The problem is that at the moment this attempt creates the table in the same loop as it gets the data from the database so I get every row of data to a separate table... :)
So, if someone could help me in my studies and tell how can I get my data to a single table? :)
Here's what I've been messing with...
try
yhteys=DriverManager.getConnection(url, tunnus, salasana);
stmt=yhteys.createStatement();
sql = "SELECT A.Asiakasnumero, A.Yritys, A.L?hiosoite, A.Postinumero, A.Postitoimipaikka, T.Tilnro, T.Toipvm, T.Tuotenumero, T.Tuote, T.Kappaletta FROM ASIAKAS AS A, TILAUS AS T, TUOTE AS TU WHERE Toipvm=(SELECT MAX(Toipvm) FROM TILAUS AS TI WHERE TI.Asnro=T.Asnro) AND A.Asiakasnumero=T.Asnro AND T.Tuotenumero=TU.Tuotenro AND A.Asiakasnumero=1";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next())
Object an=rs.getString("Asiakasnumero");
Object yr=rs.getString("Yritys");
Object lo=rs.getString("L?hiosoite");
Object pn=rs.getString("Postinumero");
Object pt=rs.getString("Postitoimipaikka");
Object tn=rs.getString("Tilnro");
Object tp=rs.getDate("Toipvm");
Object tu=rs.getString("Tuotenumero");
Object tt=rs.getString("Tuote");
Object ka=rs.getString("Kappaletta");
String[] columnNames = {"Asiakasnumero",
          "Yritys",
          "L?hiosoite",
          "Postinumero",
          "Postitoimipaikka",
          "Tilnro",
          "Toipvm",
          "Tuotenumero",
          "Tuote",
          "Kappaletta"};
Object[][] data = {
{an, yr, lo, pn, pt, tn, tp, tu, tt, ka},
final JTable table = new JTable(data, columnNames);
table.setPreferredScrollableViewportSize(new Dimension(1000, 70));
if (DEBUG) {
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
printDebugData(table);
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane);
stmt.close();
yhteys.close();
catch(SQLException ex)
System.err.println("SQLException: "+ex.getMessage());
As you can see, this is EXTREMELY raw version (all data is retrieved as Strings instead of what they really are, and... Well... The JTable part is quite a straight copy from "Simple Table Demo"...).
This is because I wanted to have the table running first before trying anything else and I'm learning from these examples. So, if anyone of you could give me hints I would really appreciate them...
What I need to do first is get the JTable-part away from the while loop but how does that happen? :D
/Sampsa

You need to have layers. A layer is one or more classes that exist to provide a specific functionality. Typically a layer is "between" to other things and each thing can send input and get output from the layer.
The gui layer does the gui part. (The two sides are the 'user' and the 'database layer')
The database part does the database part. (The two sides are the 'gui layer' and the 'database')
The gui layer calls the database layer to do the work.
So for example you would have the following method in the database layer.
Customer.getByName(String firstName, String lastName)
This method would get a customer using the customer name to build the query string.
Now if you want the Customer object could just have a bunch of get methods to get the data after you call the above method....
getFirstName()
getLastName()
getAddress()
getTelephone()
The problem with the above becomes apparent when you start adding stuff, more types of objects and more fields to the objects.
So typically a DTO is used.....
http://java.sun.com/blueprints/corej2eepatterns/Patterns/TransferObject.html
Try reading through the above link and you might also look at this one....
http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html
Keep in mind that you don't necessarily need the details in the above but just focus on the conceptual ideas.
And once you read the above ask for more information.

Similar Messages

  • Database Toolkit - Get Database Information

    Hi All,
    I'm struggling a bit with this toolkit, and thought I'd bring it up on here for some input.
    Using the included functions with that toolkit, I'm able to connect to my database, but i'm having trouble writing to it (Error -2147217913).  I'm a bit concerned that maybe my data types don't match, so in order to confirm, I noticed in the examples given with this toolkit there was a VI that gets your database information (Column names, tables, most relevant - data types per column name.).  Something odd happened that I'm not sure if its supposed to:
    I changed the UDL address of the example database, to my database's UDL...nothing else, just to get a list of datatypes.  Now using their UDL it finishes cleanly, w/no error.  With my UDL - I receive Error -2147217900 occurred at Conn Execute.vi->DB Tools List Columns.vi->Get Database Information.vi.  Interesting eh?  But it does show every column name/and data type, wonder why it fails though?
    Anyone have some recommendations of how to troubleshoot next? Or how to interpret this?  I'm betting if I can figure out why its failing in the example program, both failures are maybe tied together?
    LV7.1, LV8.5

    Hi Aashish!
    Good news, figured out the problem...I WAS writing a null to the database (by accident), and while access doesn't mind them - the toolkit is based on SQL standard which i believe does.  The program had a cluster that was being initialized, and fed into a loop where it waited for user action. (So we didn't have left over garbage in each field whenever the app ran.)  Once the user input all their data, that same wire was fed into the input to populate the array. I thought it would update the cluster as the controls were changed, but I guess the only way to change elements is to unbundle, change and rebundle. (At least thats how it behaves)
    Appreciate the help, but while on the topic maybe you can give me a pointer, the only way I could work it so a fresh copy of the data was sent into the cluster, was to make a local variable of the cluster and wire that to the input (See picture).  Rather than get yelled at later if I need more help, any idea how to reduce that local so we don't require a duplicate copy of the data?  (avoid race conditions, etc.)  Or would you even?  Guess it boils down to, is there another way to update the cluster in there?  I can unbundle, and rebundle, but I'm not sure what I'd do between the two to update all those to feed into the database...its a bit confusing to describe but I think it gets the idea across lol.
    I was thinking about a way to do it...and thought maybe I need an indicator for each control, then when the indicator changes, feed that into the control cluster to update from intial and go from there...but thats a copy of data the same size as the local would make, I'd think.
    LV7.1, LV8.5
    Attachments:
    Working method.JPG ‏147 KB

  • I am new to Mac Pro but am purchasing one online.  can anyone tell me how to get the information from my Toshiba onto the Mac.  there are no stores in the state I live in.  Do I need to find a location and will they do a transfer from my I Tunes etc?

    I am new to Mac Pro and am purchasing one online  tonight.  Can anyone tell me how to get my information - Itunes, photos, and videos transferred onto the Mac from my Toshiba.  the state I live in doesn't have an Apple store but I could take it to Minneapolis when I go.  Any ideas where to begin?

    You might profit from a visit to a Minneapolis Apple store. With a brand new Mac, I think they will be most helpful - not just with transferring files, but with other advice as well. And I strongly recommend you invest in a back up drive. The Apple folk can help with that as well.

  • How to get the information of the log related to t.code generated by basis.

    In the log generated by the basis personnel we found the details of user and corresponding t.code used details.  How to get the information reg. which document he went into using this t.code? For example me29 t.code used by 'x' user.  The log is showing time date t.code and user.  By using me29n which document he attended is the requirement. How to get this information. Let me know it pl.
    TS

    Thanks all for the help.
    Here is my solution. A mix from Julian and Thomas.
    In future I will encapsulate the code in a function module.
    DATA: BEGIN OF usr_tabl OCCURS 10.
            INCLUDE STRUCTURE uinfo.
    DATA: END OF usr_tabl.
    DATA: th_opcode(1) TYPE x.
    DATA: LV_TID LIKE  SY-INDEX.
    CONSTANTS: opcode_list LIKE th_opcode VALUE 2.
    CALL 'ThUsrInfo' ID 'OPCODE' FIELD opcode_list
      ID 'TAB' FIELD usr_tabl-sys.
    CALL FUNCTION 'TH_USER_INFO'
      EXPORTING
        CLIENT = sy-mandt
        USER   = sy-uname
      IMPORTING
        TID    = LV_TID.
    read table usr_tabl with key tid = lv_tid.
    IF sy-subrc = 0.
      CASE usr_tabl-type.
        WHEN 2.
          write :/ usr_tabl-type, 'SYSTEM'." (system)
        WHEN 4.
          write :/ usr_tabl-type, 'GUI'." (Gui)
        WHEN 32.
          write :/ usr_tabl-type, 'RFC'."(RFC)
        WHEN 202.
          write :/ usr_tabl-type, 'PLUG-IN'." (Plug-in &).
      endcase.
    ENDIF.

  • How to get database connection in applet

    Hi,
    I am trying to prepare database connection in applet. After preparing connection with database it'll read same values from table.
    At the time of development it works fine. I have used esclipse IDE for coding and testing.
    But when I try to call that applet from browser. It is giving ClassNotFound exception.
    Does anybody know How to get database connection in applet ?
    Please help me if anybody know solution for this.
    Thanks,
    Rajesh

    As per my knowledge is conserned
    1 u can get the database connection in a jsp page and u send the result set as param to the applet and u can use retrieved values as if they were of the same applet if u r interested i can send the db connetion coding for jsp my id [email protected]

  • How I get a Information about how many Scheduling agree

    Dear friend,
       Can any one tell me a process ,How I get a information about how many scheduling agreement or Schedule lines created with in given time.Any standard tcode available  ?
    Regards
    Abrar AHmed

    Dear Abrar
    - To see how many scheduling agreement is created for a given period, use VA05, click on [Further sel criteria] and tick the box against [Sales Document type]  Now input the scheduling agreement type and execute.  You will get list of all scheduling agreements created within the specified period.
    - You can see how many line items are created in a sale order for a given period via VA05.
    thanks
    G. Lakshmipathi

  • How i get some informations about audio file?

    Hi to all,
    i would like to know how i get some informations about audio file, such as its artist, bitrate, file type, duration, ecc...
    Any help me?

    Ok, but which are the docs of audio format?Again, what does that have to do with Java?
    Where i can found these documents?Again, what does that have to do with Java?
    Thank you...For nothing.
    db

  • How to get Listener Information using PL/SQL code

    How to get Listener Information using PL/SQL code

    user2075318 wrote:
    How to get Listener Information using PL/SQL codeThis approach (somewhat of a hack) can be used - but it does not really provide meaningful data at application layer.
    SQL> create or replace function TnsPing( ipAddress varchar2, port number default 1521 ) return varchar2 is
      2          type THexArray is table of varchar2(2);
      3          --// tnsping packet (should be 10g and 11g listener compatible)
      4          TNS_PING_PACKET constant THexArray := new THexArray(
      5                  '00', '57', '00', '00', '01', '00', '00', '00',
      6                  '01', '39', '01', '2C', '00', '00', '08', '00',
      7                  '7F', 'FF', '7F', '08', '00', '00', '01', '00',
      8                  '00', '1D', '00', '3A', '00', '00', '00', '00',
      9                  '00', '00', '00', '00', '00', '00', '00', '00',
    10                  '00', '00', '00', '00', '00', '00', '00', '00',
    11                  '00', '00', '00', '00', '00', '00', '00', '00',
    12                  '00', '00', '28', '43', '4F', '4E', '4E', '45',
    13                  '43', '54', '5F', '44', '41', '54', '41', '3D',
    14                  '28', '43', '4F', '4D', '4D', '41', '4E', '44',
    15                  '3D', '70', '69', '6E', '67', '29', '29'
    16          );
    17 
    18          socket  UTL_TCP.connection;
    19          txBytes number;
    20          rxBytes number;
    21          rawBuf  raw(1024);
    22          resp    varchar2(1024);
    23  begin
    24          socket := UTL_TCP.open_connection(
    25                          remote_host => ipAddress,
    26                          remote_port => port,
    27                          tx_timeout => 10
    28                  );
    29 
    30          --// convert hex array into a raw buffer
    31          for i in 1..TNS_PING_PACKET.Count loop
    32                  rawBuf := rawBuf || HexToRaw( TNS_PING_PACKET(i) );
    33          end loop;
    34 
    35          --// send packet
    36          txBytes := UTL_TCP.write_raw( socket, rawBuf, TNS_PING_PACKET.Count  );
    37 
    38          --// read response
    39          rxBytes := UTL_TCP.read_raw( socket, rawBuf, 1024 );
    40 
    41          UTL_TCP.close_connection( socket );
    42 
    43          --// convert response to varchar2
    44          resp := UTL_RAW.Cast_To_Varchar2( rawBuf );
    45 
    46          --// strip the header from the response and return the text only
    47          return( substr(resp,13) );
    48  end;
    49  /
    Function created.
    SQL>
    SQL> select tnsping( '10.251.93.30' ) as TNSPING from dual;
    TNSPING
    (DESCRIPTION=(TMP=)(VSNNUM=169869568)(ERR=0)(ALIAS=LISTENER))
    SQL> select tnsping( '10.251.95.69' ) as TNSPING from dual;
    TNSPING
    (DESCRIPTION=(TMP=)(VSNNUM=0)(ERR=0)(ALIAS=LISTENER))
    SQL>

  • How to get this information for Conky

    Hi people,
    My question is how to get this information for show in Conky:
    - KDE version.
    - Last sync (pacman -Sy) and Last update (pacman -Su)
    For the first point could be use a script that execute $ kdesu --version and get information from there.
    I have no idea how get information from pacman (may be logs?).
    Any ideas?
    Thank you.

    I have had tremendous success with LUA in Conky on Arch. And all you need to to is put the text HI after the "TEXT" line. ^^;
    Examples of my LUA usage:
    http://fc02.deviantart.net/fs71/i/2010/ … usLink.png
    http://kittykatt.silverirc.com/screens/conky-HUD.png
    EDIT:  Also, I've had success with getting the KDE version by doing the following...
    kwin --version | awk '/^Qt/ {data="Qt v" $2};/^KDE/ {data=$2 " (" data ")"};END{print data}'
    This is the method I'm currently using in screenFetch. Tested it a couple of times myself, but besides that, I'm not sure if it will work or not.
    Last edited by kittykatt (2010-04-22 17:52:25)

  • How to get the information like IP address,Host name of connected clients v

    Hi Every one,
    I want to get the information like (IP Address,Hostname,Active sessions , Database Server….etc) of the connected clients
    via V$Views(ORACLE).
    And then I like to load these infromation into a table “Client_Table”.
    Could some one give me suggestion that which V$ views/method I use in order to get the above information and then
    how to load these information into a table “Client_table”?
    Your suggestions will be highly appreciated.
    With Regards
    BILAL

    You could use a LOGON TRIGGER so every session insert its own environment into your client_info table.
    You could use the following view and choose whatever attribute you need:
    create or replace view my_userenv (
    AUDITED_CURSORID ,
    AUTHENTICATION_DATA ,
    AUTHENTICATION_TYPE ,
    BG_JOB_ID ,
    CLIENT_IDENTIFIER ,
    CLIENT_INFO ,
    CURRENT_SCHEMA ,
    CURRENT_SCHEMAID ,
    CURRENT_SQL ,
    CURRENT_USER ,
    CURRENT_USERID ,
    DB_DOMAIN ,
    DB_NAME ,
    ENTRYID ,
    EXTERNAL_NAME ,
    FG_JOB_ID ,
    GLOBAL_CONTEXT_MEMORY ,
    HOST ,
    INSTANCE ,
    IP_ADDRESS ,
    ISDBA ,
    LANG ,
    LANGUAGE ,
    NETWORK_PROTOCOL ,
    NLS_CALENDAR ,
    NLS_CURRENCY ,
    NLS_DATE_FORMAT ,
    NLS_DATE_LANGUAGE ,
    NLS_SORT ,
    NLS_TERRITORY ,
    OS_USER ,
    PROXY_USER ,
    PROXY_USERID ,
    SESSION_USER ,
    SESSION_USERID ,
    SESSIONID ,
    TERMINAL
    ) AS SELECT
    SYS_CONTEXT ('USERENV', 'AUDITED_CURSORID') ,
    SYS_CONTEXT ('USERENV', 'AUTHENTICATION_DATA') ,
    SYS_CONTEXT ('USERENV', 'AUTHENTICATION_TYPE') ,
    SYS_CONTEXT ('USERENV', 'BG_JOB_ID') ,
    SYS_CONTEXT ('USERENV', 'CLIENT_IDENTIFIER') ,
    SYS_CONTEXT ('USERENV', 'CLIENT_INFO') ,
    SYS_CONTEXT ('USERENV', 'CURRENT_SCHEMA') ,
    SYS_CONTEXT ('USERENV', 'CURRENT_SCHEMAID') ,
    SYS_CONTEXT ('USERENV', 'CURRENT_SQL') ,
    SYS_CONTEXT ('USERENV', 'CURRENT_USER') ,
    SYS_CONTEXT ('USERENV', 'CURRENT_USERID') ,
    SYS_CONTEXT ('USERENV', 'DB_DOMAIN') ,
    SYS_CONTEXT ('USERENV', 'DB_NAME') ,
    SYS_CONTEXT ('USERENV', 'ENTRYID') ,
    SYS_CONTEXT ('USERENV', 'EXTERNAL_NAME') ,
    SYS_CONTEXT ('USERENV', 'FG_JOB_ID') ,
    SYS_CONTEXT ('USERENV', 'GLOBAL_CONTEXT_MEMORY') ,
    SYS_CONTEXT ('USERENV', 'HOST') ,
    SYS_CONTEXT ('USERENV', 'INSTANCE') ,
    SYS_CONTEXT ('USERENV', 'IP_ADDRESS') ,
    SYS_CONTEXT ('USERENV', 'ISDBA') ,
    SYS_CONTEXT ('USERENV', 'LANG') ,
    SYS_CONTEXT ('USERENV', 'LANGUAGE') ,
    SYS_CONTEXT ('USERENV', 'NETWORK_PROTOCOL') ,
    SYS_CONTEXT ('USERENV', 'NLS_CALENDAR') ,
    SYS_CONTEXT ('USERENV', 'NLS_CURRENCY') ,
    SYS_CONTEXT ('USERENV', 'NLS_DATE_FORMAT') ,
    SYS_CONTEXT ('USERENV', 'NLS_DATE_LANGUAGE') ,
    SYS_CONTEXT ('USERENV', 'NLS_SORT') ,
    SYS_CONTEXT ('USERENV', 'NLS_TERRITORY') ,
    SYS_CONTEXT ('USERENV', 'OS_USER') ,
    SYS_CONTEXT ('USERENV', 'PROXY_USER') ,
    SYS_CONTEXT ('USERENV', 'PROXY_USERID') ,
    SYS_CONTEXT ('USERENV', 'SESSION_USER') ,
    SYS_CONTEXT ('USERENV', 'SESSION_USERID') ,
    SYS_CONTEXT ('USERENV', 'SESSIONID') ,
    SYS_CONTEXT ('USERENV', 'TERMINAL')
    from dual;

  • XSchema: How to get (more) Information about validation errors?

    I changed the file car.xml to have an invalid xml-file, then
    i validate the demo car.xml using the demo programm xsdtest.
    I got the following error message:
    In line 7 of car.xml:
    LSX-00290: invalid enumeration choice "Hugo"
    LSX-00213: only 0 occurrences of particle "sequence", minimum is 1
    Validation failed, error 213
    The first 2 lines are dumped from the SchemaProzessor. Unfortunatly there is no
    possibility to get this information with a methodcall or by return value
    to use for further processing!
    The only thing i got controlled back is the error code 213.
    But how do i get the correspondening errortext ? What means error 213 ?
    So here is my suggestion:
    Please give accurate information about validation errors! Including:
    1) The position where the error occurred. (maybe in XPath notation)
    2) An error Number to classify the error (Including a possibility to resolve the errormessage via program.)
    3) An error text for the specific case : (for example : invalid enumeration choice "Hugo")
    Please give this information in a struct back or provide methods on the
    Xschema prozessor.
    Otherwise the XSchema support is useless!!!!!
    Sorry for my bad English & Greetings
    Martin Frenzel
    By the way: The XDK for Java uses a different Error Messages !!!! But there is the same problem...

    1.How to check when user last time login to database.AUDIT
    2.If user account is lock why it is locked? if it is locked by trying to loing with wrong password how to check how many times he attempted with wrong password...and other reasons alsoCheck Profile For this user and attr.
    3.Wheni was trying to select user expire date it is showing empty value...can we check expire date through querys or we need to check profile?
    SQL> select EXPIRY_DATE from dba_users ;
    EXPIRY_DA
    24-SEP-11
    24-SEP-11
    24-SEP-11
    24-SEP-11
    24-SEP-11
    24-SEP-11
    24-SEP-11
    23-MAY-13
    24-SEP-11
    24-SEP-11
    24-SEP-11 check
    expiry_date in dba_users is null
    4.How to check when he was reset his password last time.SELECT PTIME FROM SYS.USER$;

  • How to get  visible row  count  in JTable ?

    I have one table which is added to one scroll pane. For example my table have total 1000 rows, but at a time only 20 rows should be visible to the scroll pane. And I want to scroll the rows and show only 20 at a time.When user scrolls JTable then next time he can view only 1 to 21, then 2 to 22, and so on. I want to know how to get that number which represents the visible row( in this case it is 20).So kindly help me how to get visible row count. Any help regarding this will be appriciated.
    Thanks and Regards,
    Sheetal

    how to get visible row count.First you need to get the viewport used by the scrollpane. Then you can use methods like getViewPosition() and getViewSize() to get information about the current postition of and size of the viewport.
    Then you can use the table method getRowAtPoint(). to determine the first and last visible row which can then be used to calculate the visible row count.
    When user scrolls JTable then next time he can view only 1 to 21, then 2 to 22, and so onThis is the default behaviour when a "block" scroll is done.
    However when you click on the arrow button on the scrollbar it will only scroll a single row. You could override the getScrollableUnitIncrement() method to return the value from the getScrollableBlockIncrement() method.
    However the user can still drag the scrollbar manually which would cause a problem. So you would also need to remove the MouseMotionListeners from the scrollbar to prevent this.

  • How to get desktop information in background?

    Dear all,
    I need to get desktop information, such as computer name, when running program in background. How to do that? Thanks.

    I got the answer for you:
    DATA: BEGIN OF usr_tabl OCCURS 10.
            INCLUDE STRUCTURE uinfo.
    DATA: END OF usr_tabl.
    DATA th_opcode(1) TYPE x.
    DATA: size TYPE i.
    CONSTANTS: opcode_list LIKE th_opcode VALUE 2.
    CALL 'ThUsrInfo' ID 'OPCODE' FIELD opcode_list
    ID 'TAB' FIELD usr_tabl-*sys*.
    DESCRIBE TABLE usr_tabl LINES size.
    READ TABLE usr_tabl INDEX size.
    WRITE usr_tabl-term.
    From:GUI_GET_DESKTOP_INFO is not worked when run in background

  • Account hacked; how to get my information back

    hello Skype team and costumers i have recently been hacked and i was wondering if anyone had any suggestions as to how to get my address and personal info back i have tried the standardf thing skype have had to offer with no joy so if anyone could i would be truly greatful
    This post was transferred from its previous location to create its own new topic here; its subject and/or title has been edited to differentiate the post from other inquiries and to reflect the post's content.

    Hi, Gregster, and welcome to the Community,
    Here is a link to the instruction on how to contact Skype Customer Service via their secure portal: Contact Customer Service
    Here are a few extra notes to guide you along the way ...
    You will need to proceed through each step, one at a time. Sign on to the Skype website as requested. Choose the subject and topic which most closely matches the item you need assistance with. Then, continue past Step 2 of the instruction where several articles from the FAQ library will appear for you to review, and proceed to Step 3, Continue Support Request (the blue "button" appears at the lower right corner of the website page). You may also skip through Step 4 where you will be referred back here to the Community; no need to do this as the Community is where you started. When you complete the web-form and click Submit, your information is relayed to Skype and you will receive a reply via e-mail unless you are transferred to start an instant message chat session with a Customer Service agent.
    If you experience difficulty reaching Skype Customer Service, try again using a different web browser. Also, look to approve a pop-up dialogue box which would connect you to start an instant message chat with a customer service agent. If you have pop-ups blocked in your browser settings, this will also impede reaching an agent.
    Skype is aware of these website issues.
    Regards,
    Elaine
    Was your question answered? Please click on the Accept as a Solution link so everyone can quickly find what works! Like a post or want to say, "Thank You" - ?? Click on the Kudos button!
    Trustworthy information: Brian Krebs: 3 Basic Rules for Online Safety and Consumer Reports: Guide to Internet Security Online Safety Tip: Change your passwords often!

  • How to get timesheet information in a javascript (Project Server 2013)

    Hi all,
    In Project Server 2013, I'm trying to customize the Timesheet ribbon. This far, I've been able to add a new button and tie an event to it. All is working well. This is all done using elements.xml and a javascripts.
    Now the problem is that I want to get some informations about the timesheet (the Guid for example) and, for now, I've got no success. I know that there is an object called PS.TimeSheet, but when I try to use some PS.TimeSheet's methods I get an error.
    Note that i'm in the page http://servername/pwa/timesheet.aspx (there is not Guid in the address) and all the treatments should be done in the javascript (no call to another aspx page)
    Thanks !

    Finally, I've found the solution.
    My goal was to add a button in the timesheet ribbon to launch a special report showing some data about the timesheet. The report has the timesheet Guid as parameter.
    To customize the Sharepoint ribbon, you have to do it via an xml file and a javascript (a lot of explanation is available in the internet that explains how to do it). So I had to call a function in the javascript to launch the report (which is a SSRS report).
    When you are in a javascript you have access to many global variables. When the timesheet.aspx is displayed, there is a global variable called "timesheetComponent".
    Using this variable we can call the method :
    timesheetComponent.m_consumedApi.get_Impl()
    to get an implementation of the current timesheet. This implementation has an attibute that has a lot of nice stuff about the current user and the current time sheet. This attribute is 
    _headerInfo
    _headerInfo is a structure that includes tsUid which contains the timesheet Guid I was looking for.
    Finally, the function attached to the button goes like this :
    function _LaunchReport() {
    var tsUId;
    var rptPath;
    var tsImpl = timesheetComponent.m_consumedApi.get_Impl();
    try
    if (CONST_REPORT_PATH == null || CONST_REPORT_PATH == "" ) {
    alert("Constant CONST_REPORT_PATH is not defined")
    else {
    tsUId = tsImpl._headerInfo.tsUid;
    rptPath = CONST_REPORT_PATH + 'TimesheetDetails&rs:Command=Render&rc:Parameters=false&TimesheetUID=' + tsUId;
    window.open(rptPath);
    catch (Err) {
    alert(Err)
    CONST_REPORT_PATH is the path to SSRS defined elsewhere
    I hope this will help some other poeple !

Maybe you are looking for