How to properly code for exception management?

Hey you wonderful people you

I have a quesiton on how to correctly code in PL/SQL for exception management. Here is my code below, I was told that how I use in my script of exception handling is simply not true.

Can someone please adjust the section where I use the management of exceptions and show me what is the appropriate way to deal with exceptions.

Here is the table creation script, so you can see what how the script fills the table DYNAMIC_COUNTS.

--------------------------------------------------------------------------------------------------------------------------

CREATE TABLE DYNAMIC_COUNTS

(VARCHAR2 (30 BYTE) "T_OWNER",

VARCHAR2 (30 BYTE) "T_TABLE_NAME."

VARCHAR2 (30 BYTE) "T_COLUMN_NAME."

NUMBER OF 'FND_PATTERNS');

Now, here's the script:

------------------------------------------------------------------------------------------------------------------------

Set serveroutput size unlimited
run the DBMS_OUTPUT. ACTIVATE (buffer_size = > NULL);

DECLARE

TYPE nt_tab IS TABLE OF dynamic_counts % ROWTYPE;

v_nttab nt_tab: = nt_tab();

FND_LOOK INTEGER.

v_incr NUMBER: = 0;

------------------------------------------------------------------------------------------------------------------------

BEGIN

FOR t IN (SELECT master, table_name, column_name

From all_tab_columns

Owner WHERE = UPPER ('& SCHEMA_NAME'))

------------------------------------------------------------------------------------------------------------------------

LOOP

BEGIN

EXECUTE IMMEDIATE ' with an ACE (select case when REGEXP_LIKE (' | t.column_name |))

-This search 1 letter and 12 figures-
', "^ ([[: alpha:]] |) [[: alpha:]] ({3}) [0-9] {12} $")



then "match"

another "no matches found" end up as output of ' | t.Owner | '.' || t.table_name | ')

Select count (*) in a where a.output = "Match Found" clause '


IN FND_LOOK;


------------------------------------------------------------------------------------------------------------------------
IF FND_LOOK > 0 THEN

v_incr: = v_incr + 1;

v_nttab. EXTEND;

v_nttab (v_incr) .t_owner: = t.owner;

v_nttab (v_incr) .t_table_name: = t.table_name;

v_nttab (v_incr) .t_column_name: = t.column_name;

v_nttab (v_incr) .fnd_patterns: = FND_LOOK;

END IF;

------------------------------------------------------------------------------------------------------------------------
/ * This is for DBMS output, thus we have 2 different ways, one can see the results in the table dynamic_counts
and in the dbms_output
*/


IF FND_LOOK > 0 THEN


Dbms_output.put_line (t.owner |) '.' || t.table_name | ' ' || t.column_name | ' ' || FND_LOOK);



END IF;


------------------------------------------------------------------------------------------------------------------------

/ * Exception handling * /.



EXCEPTION

WHILE OTHERS

THEN

Dbms_output.put_line)

"Generic error".

|| t.column_name

|| "from".

|| t.Owner

|| '.'

|| t.table_name);

END;

END LOOP;

------------------------------------------------------------------------------------------------------------------------

FORALL i IN 1.v_nttab. COUNTY

INSERT INTO dynamic_counts (t_owner,

t_table_name,

t_column_name,

fnd_pattens)

VALUES (v_nttab (i) .t_owner,

v_nttab (i) .t_table_name,

v_nttab (i) .t_column_name,

v_nttab (i) .fnd_patterns);

COMMIT;

END;

/


Isn't there. In the statement in the EXCEPTIONS section dbms_output.

Tags: Database

Similar Questions

  • FOR exception management loop

    Given the following code:
    for x in my_cursor loop
        begin
            <<stmt_1>>
            <<stmt_2>>
        exception
            when others then
                <<log_error>>
        end;
    end loop;
    Say there are 5 x in my_cursor. On the element x 3, stmt_1 works fine but stmt_2 throws an exception. I would like to restore ONLY the work done on x 3 (in this case, stmt_1), then continue the loop of the next element, x 4. Can this be achieved with a combination of backup/restore point?

    In this particular case, I would suggest that you follow the third example I posted where you stand on the core of your loop in a procedure such that you change only the values of a and b If your insert succeeds, that is

    CREATE OR REPLACE PROCEDURE proc_name( p_x IN NUMBER, p_a IN OUT NUMBER, p_b IN OUT NUMBER )
    AS
      l_tmp_a NUMBER;
      l_tmp_b NUMBER;
    BEGIN
      SAVEPOINT s1;
      l_tmp_a := p_a + p_x;
      l_tmp_b := 1/(6-l_tmp_a);
      INSERT INTO test_tbl VALUES( l_tmp_a, l_tmp_b );
      p_a := l_tmp_a;
      p_b := l_tmp_b;
    EXCEPTION
      WHEN <>
      THEN
        ROLLBACK TO SAVEPOINT s1;
    END;
    

    You can, of course, have the same local variables of the TMP in your original code. Or you could replicate the calculations, i.e.

    for x in 1..5 loop
    begin
      savepoint s;
      insert into test_tbl values(a+x,1/(6-a));
      a := a+x;
      b := 1/(6-a);
    exception
      when others then
        rollback to savepoint s;
    end;
    

    Justin

  • ADF 11 generate different codes for box

    Hello

    I want to generate different ID of an iterator Panel box because the feature is drag-and - déposer does not work. I knew the ID of component does not support EL.
    This is a chance to generate my ID dynamically, and how?

    My code for my page is:

    < af:panelGroupLayout id = "pgl8" >
    < af:iterator id = "i2" var = "row".
    value = "#{bindings." MeniuVO1.collectionModel} ">"
    < af:panelBox text = ' #{rank. " Description} ".
    Binding = "#{WelcomeBean.PB1} '"
    inlineStyle = "width: 167px;" >
    < name f: facet = "toolbar" / >
    < af:dropTarget dropListener = "#{DragAndDropBean.handleContainerDrag} '"
    action = "MOVE" >
    < af:dataFlavor flavorClass="javax.faces.component.UIComponent"/ >
    < / af:dropTarget >
    < af:componentDragSource / >
    < / af:panelBox >
    < / af:iterator >
    < / af:panelGroupLayout >


    Thank you.

    Hello

    You can try with

    as

    
    
    
    
    
    
    
    
    
    

    Published by: Santosh Vaza on April 10, 2012 12:56

  • BlackBerry - how to properly manage a TAP/CLICK in a custom handler

    I need to set up an event of click/tap for a custom Manager.

    The Manager contains a few items, but I need that all respond to the event Manager, so if the user taps/clicks No matter what item in the Manager, the event handler should be called also. What I've done is to attach a changeListener to a NullField which takes the width and height, but the fieldChanged method is never called

    public class TestManager extends Manager{
        private BitmapField _icon;
        private LabelField _lblTitle;
        private NullField nullField;
        public TestManager(Bitmap pIcon){
            super(Manager.FOCUSABLE);
            _icon = new BitmapField(pIcon);
            _lblTitle = new LabelField("This is the title");
            nullField = new NullField(NullField.FOCUSABLE);
            add(_icon);
            add(_lblTitle);
            add(nullField);
                nullField.setChangeListener(new FieldChangeListener() {
    
            public void fieldChanged(Field field, int context) {
                doSomething();
            }
        });
    
        }
    
        public void doSomething(){
        System.out.println("do something!!");
    }
        public void paint(Graphics graphics)
        {
           graphics.setColor(Color.DELIMITER_COLOR);
           graphics.fillRect(0, 20, Display.getWidth(), 50);
    
           super.paint(graphics);
        }
    
        protected void paintBackground(Graphics arg0) {
           arg0.setColor(Color.LIGHTGRAY);
           arg0.fillRect(0, 0, Display.getWidth(), Display.getHeight());
           super.paint(arg0);
        }
    
        protected void sublayout(int width, int height) {
            setPositionChild(_icon, UIFactory.getBestX(10), UIFactory.getBestX(8));
            setPositionChild(_lblTitle, UIFactory.getBestX(60), _topMarginTitle!=0?UIFactory.getBestX(_topMarginTitle):UIFactory.getBestX(15));
            setPositionChild(nullField, 0, 0);
            layoutChild(_icon, width, UIFactory.getBestX(50));
            layoutChild(_lblTitle, width, UIFactory.getBestX(50));
            layoutChild(nullField, width, height);
            setExtent(width, height);
        }
    
          protected boolean navigationClick(int status, int time){
                invalidate();
                doSomething();
                return super.navigationClick(status, time);
            }
    
    }
    

    How can I do this whole handler to respond to a click/tap?

    I use the API 5.0

    Thanks in advance!

    The problem with the help of the NullField of to do, it's that NullField is not programmed to handle any interaction except update.

    If you need to replace navigationClick, like you did for the Manager.  So that it connects to your plumbing FieldChangeListener (which is the right thing to do in my opinion. you must call fieldChangeNotify, for example):

            protected boolean navigationClick(int status, int time) {
                    this.fieldChangeNotify(2);
                    return true;
            }
    

    Now you will replace it in the NullFeld because it gets the focus.  You must make sure that nothing else in the Manager is focusable.

    But you will need some guidance in the manager who is has the focus, so that the user knows - especially for when the user is using the trackpad.  To do this, make a focusChangeListener for the NullField Manager and have the listener code set a flag if the focus was acquired or not and then invalidate() himself.  In object check the flag and if it is set, paint for focus, if not, paint for any developed.

    Come back if this is not clear.

    Byt the way, the sublayout in your manager looks a bit ropey to me, it's especially this:

    setExtent (width, height);

    You really want to show to what extent being large enough to accommodate all your field and no more.

    There are other things that I'm not sure, but if it works for you, then I guess it's OK.

    Good luck

  • How to enter a code for pairing manually on windows 7?

    I have the same problem with a Jambox bluetooth device.

    It pairs very well w / a phone android and iOS devices... However it does not connect to my laptop running windows 7.  It fails due to an authentication failure and pairing code problem.  I looked all over these forums and responses of 'solution' drive me crazy because they are useless and do not address the real problem.  I don't need to enter the code on the device.  I need to enter it on my laptop but I can't find a place to do it.
    My laptop never asks me a code is not anywhere I can find to enter manually on my laptop. I already know the code for the device is 0000, but I have no way to get on my cell.

    Please find a solution to anyone!

    Hello Alan,.

    Thanks for posting your question on the Microsoft community.

    I would like to know some information about the problem so that we can help you better.

    What is the brand and model of your computer?

    Thank you for details on the question and your efforts to resolve.

    This problem may occur either if the Bluetooth drivers are not installed properly, or they are corrupt.

    I would suggest trying the following methods and check if it helps.

    Method 1:
    Uninstall and reinstall the Bluetooth drivers and check. Please follow these steps:

    a. Click Start, type Device Manager in the start search box and press ENTER.

    b. in Device Manager, expand "Bluetooth."

    c. right-click on the Bluetooth device, then click on Uninstall.

    Now you can download and install the drivers Bluetooth of the computer manufacturer's website and check.

    If this does not help, use method 2.

    Method 2:
    Please use the suggestions in this article and check the issue.
    Reference:
    Bluetooth devices do not work correctly on a computer that is running Windows 7
    http://Support2.Microsoft.com/kb/980396

    I hope this information helps.

    Please let us know if you need more help.

    Thank you

  • How do to make the simplest code for dynamic data?

    Hello world!

    I have a JSON file with more than 200 records.

    I want that each record to be active button with unique actions.

    The code is the following:

    $.getJSON ("content.json",

    {function (Data)}

    for (var i = 0; i < 200; i ++) {}

    var s = sym.getSymbol("base").createChildSymbol ("template", "CONT");

    s.getSymbolElement ();

    s.Element.attr ('id', 'symbol' + i);

    s. $("imageholder") .css ({'background-image': "url ('" + data [i].) "}) (image_+_«_'_»)});

    s. $("imageholder") .data ('myIndex', i);

    s.$("imageHolder"). Data('title',Data[i].) (Name)

    s.. Click$ ("imageholder") ("click", Function {}

    If ($(this) .data ("myIndex") == 0) {}

    WB = 10;

    SYM.$("#symbol0"). Show();

    SYM.$("#Symbol1"). Hide();

    SYM.$("#Symbol2"). Hide();

    SYM.$("#symbol3"). Hide();

    sym.getComposition () .getStage ().getSymbol('placer').$("holder").css ({'background-image': "url (" + $(this).data('Large') + ")"});

    sym.getComposition () .getStage ().getSymbol('placer').$("holdertxt").html ($(this) .data ('the kid'));

    If (WB == 10) {}

    sym.getSymbol("#symbol0").$("rect").animate ({opacity:1}, 700);

    };

    }

    ElseIf ($(this) .data ("myIndex") == 1) {}

    WB = 11;

    SYM.$("#symbol0"). Hide();

    SYM.$("#Symbol1"). Show();

    sym.getComposition () .getStage ().getSymbol('placer').$("holder").css ({'background-image': "url (" + $(this).data('Large') + ")"});

    sym.getComposition () .getStage ().getSymbol('placer').$("holdertxt").html ($(this) .data ('the kid'));

    If (WB == 11) {}

    sym.getSymbol("#symbol1").$("rect").animate ({opacity:1}, 700);

    };

    }

    });

    s. $("imageholder") .mouseout ("mouseout/mouseouthandler()", function (e) {}

    If ($(this) .data ("myindex") == 0 & & WB! = 10) {}

    sym.getSymbol("#symbol0").playReverse ("selectend");

    }

    ElseIf ($(this) .data ("myindex") == 1 & & WB! = 11) {}

    sym.getSymbol("#symbol1").playReverse ("selectend");

    }

    }

    });

    s. $("imageholder") .mouseout ("mouseout/mouseouthandler()", function (e) {}

    If ($(this) .data ("myindex") == 0 & & WB! = 10) {}

    sym.getSymbol("#symbol0").play ("selectstart");

    }

    ElseIf ($(this) .data ("myindex") == 1 & & WB! = 11) {}

    sym.getSymbol("#symbol1").play ("selectstart");

    }

    });

    }

    });

    How is possible to place an each command or something else for not writing for each Index and for each function actions?

    Now I'm writing for each function (passing of the mouse, click, mouseout/mouseouthandler()) the actions that each record in the JSON must do.

    Can someone help me?

    Based on your code above, I made the following assumptions:

    1. You have shown the code for two values of i (0 and 1) and want a similar code for the rest
    2. Two managers mouseout/mouseouthandler() in the code above is a typo, one of them is supposed to be a mouseover (according to the description at the bottom). In the solution, I will propose, I guess that one was supposed to be a manager of mouseover
    3. BM is a global variable and values range from 10, 11, 12... 10 + n - 1. Please check the code once though, I think that there is a logical problem with the closure, you create around WB in mouseout/mouseouthandler() handlers. I can't identify the intention if the proposed solution will be based on your code above.

    Another bug in the code is in the way you join managers:

    s.. Click$ ("imageholder") ("click", Function {}) must be changed to: s.$("imageholder"). on ("click", Function {})

    and still other managers.

    You can use the following to simplify your code:

    $.getJSON("content.json", function (data) {
         for (var i = 0; i < data.length; i++) {
              var s = sym.getSymbol("base").createChildSymbol("template", "conts");
              var e = s.getSymbolElement(); 
              e.attr('id', 'symbol' + i); 
              s.$("imageholder").css({ "background-image": "url('" + data[i].image + "')" });
              s.$("imageholder").data('myIndex', i);
              s.$("imageholder").data('title', data[i].name); 
    
              s.$("imageholder").on("click", function (e) {
                   WB = 10 + i;
                   sym.$("#symbol0").show();
                   sym.$("#symbol1").hide();
                   sym.$("#symbol2").hide();
                   sym.$("#symbol3").hide();
                   sym.getComposition().getStage().getSymbol('placer').$("holder").css({ "background-image": " url(" + $(this).data('Large') + ")" });
                   sym.getComposition().getStage().getSymbol('placer').$("holdertxt").html($(this).data('title'));
                   sym.getSymbol("#symbol0").$("rect").animate({ opacity: 1 }, 700);
              });
    
              s.$("imageholder").on("mouseover", function (e) {
                   //Looks like a logical bug, please double check.. I don't know how you are controlling WB from outside
                    if(WB != 10 + i) {
                        sym.getSymbol("#symbol0").playReverse("selectend");
                    }
             }); 
    
              s.$("imageholder").on("mouseout", function (e) {
                   //Looks like a logical bug, please double check.. I don't know how you are controlling WB from outside
                   if (WB != 10 + i) {
                        sym.getSymbol("#symbol0").play("selectstart");
                   }
              });
         }
    });
    

    Another option would be to set up your event handlers in the symbol definition. The advantage is that all instances would automatically inherit the behavior. You just need to understand how to set the code. For example, in your case, you can attach the following click on Manager in the symbol itself imageholder element:

    var i = sym.$("imageholder").data('myIndex');  //You will be setting the data on the instance while creating the instance. Rest of the code can use this as a param
    WB = 10 + i; //Assuming WB to be available, change the logic accordingly
    sym.$("#symbol0").show();
    sym.$("#symbol1").hide();
    sym.$("#symbol2").hide();
    sym.$("#symbol3").hide();
    sym.getComposition().getStage().getSymbol('placer').$("holder").css({ "background-image": " url(" + $(this).data('Large') + ")" });
    sym.getComposition().getStage().getSymbol('placer').$("holdertxt").html($(this).data('title'));
    sym.getSymbol("#symbol0").$("rect").animate({ opacity: 1 }, 700);
    

    The code does not work as it is, but I hope it helps you move forward and you are able to achieve what you wanted. Let us know if you encounter other problems.

    DIA-

  • common code in oracle exception Manager

    Hi all

    Here is the situation where I'm stuck...
    The current code handles all errors as shown below:
    WHILE OTHERS
    THEN
    IF cur_hdr % ISOPEN
    THEN
    CLOSE Cur_hdr;
    END IF;

    IF cur_det % ISOPEN
    THEN
    CLOSE Cur_det;
    END IF;

    ECODE: = SQLCODE;
    emesg: = v_trace_str | SQLERRM;
    SM_CONTROL_PKG.
    handle_db_error (v_package_name |) '.' || v_procedure_name,
    emesg,
    v_trace_str,
    (TRUE);
    V_RETVALUE: = 1;
    ROLLBACK;
    end;


    Now, I was asked to introduce an error more, it is a user-defined error.
    so I defined
    no_detail_for_header_ex EXCEPTION;

    In my code, I say,
    Open the cursor in the header
    Open detail slider - there no line

    So I say
    v_trace_str: =' no details for header-ERROR '
    Rossanna no_detail_for_header_ex;

    But in part, exception management
    I say,

    When no_detial_for_header_ex then
    IF cur_hdr % ISOPEN
    THEN
    CLOSE Cur_hdr;
    END IF;

    IF cur_det % ISOPEN
    THEN
    CLOSE Cur_det;
    END IF;

    ECODE: = SQLCODE;
    emesg: = v_trace_str | SQLERRM;
    SM_CONTROL_PKG.
    handle_db_error (v_package_name |) '.' || v_procedure_name,
    emesg,
    v_trace_str,
    (TRUE);
    V_RETVALUE: = 1;
    ROLLBACK;


    If you can see, the code is the same.
    close cursors and call the handle_db_error.

    I don't want to code the same thing again.
    Here, errors are different, but handled the same way. only the trace_str varies.

    I want to write something like
    When no_detial_for_header_ex or other PEOPLE can
    same code.

    is this possible with others.
    or any other suggestions.

    Thnaks in advance.

    Sure. Just declare the parameters in your cursor, then move them during the call of loop.

    cursor my_cursor (my variable)
    is
    select .... from .... where column = my variable;
    
    for cursor_rec in my_cursor (my value)
    loop
       ...
    end loop;
    

    A google for cursor for loop syntax should clear up any questions. Consider reading the Oracle pl/SQL and documentation.

  • How can I get the six digit code for my iPad Pro? I have two other iPads and an iPod but I enter the codes I get and the Pro is just off!

    How can I get the six digit code for my iPad Pro? I have two other iPads and an iPod but I get the codes I get and the Pro is just disabled for longer and longer whenever he rejects these codes!

    If you have forgotten the password for your iPhone, iPad or iPod touch, or your device is disabled - Apple supports

  • I lost the code for the option menu 'limitations' of the iPhone 4, how can you do then? so I can come and factory reset, it is a 4 digit code, so I can be able toexample factory reset the phone, don't know if this is the right forum for my question but

    I lost the code for the option menu 'limitations' of the iPhone 4, how can you do then? so I can come and factory reset, it is a 4 digit code, so I can be able toexample factory reset the phone, don't know if this is the right forum for my question but

    Sorry, but the restriction password cannot be reset, it is part of the backup and restore a backup that was taken after the restrictions were activated, restore this code again.

    You will have to start without the help of the data backup, configure the phone to factory settings and start over. Follow the steps mentioned in this article:

    Use iTunes to restore your device to factory settings - Support Apple iOS

    If you lose or forget your password restriction, you must erase your device and then put it up as a new device to remove the restriction password. Restore the device by using a backup does not delete the access code.

    copied from: Sur les Restrictions (parental control) on iPhone, iPad and iPod touch - Apple Support

  • HP 2000-2c29WM Notebook PC how do I know if I have an activation code for Microsoft Office?

    I don't have the box I bought my laptop and more. How will I know what my activation code for Microsoft Office and if I bought it with my laptop? I bought the product in the United States and I am now in South Africa. I have the icon on my Start menu.

    Hello

    You probably have a TRIAL version on your computer and you must pay to get the code. Suppliers does not display a activation code of Microsoft Office on any box.

    Kind regards.

  • How can I get the color codes for the notebook

    How can I get the color codes for the notebook?

    Hello

    What is the color codes for the notebook?

    Perhaps you need a 3rd party utility like GetDiz - Free and others to be
    found using BING or Google.

    GetDiz Notepad - free - replacement
    http://www.Outertech.com/en/Notepad-replacement

    I hope this helps.

  • How can I find the URL codes for images stored in the Windows Photo Gallery?

    How can I find the URL codes for images stored in the Windows Photo Gallery?

    If you want the path to the current record
    right click to the picture location of a photo...
    and choose... Properties / General tab.
    Location displays the path.

    If you have a photo saved on your hard drive
    car that was downloaded on the net...
    the original URL will appear not in
    the file.

  • When the updates of windows I get and error code for 643. How can I fix it?

    When the updates of windows I get and error code for 643. How can I fix it?

    When the updates of windows I get and error code for 643. How can I fix it?

    Here is an answer which is marked as an answer to the error code 643.

    I also participated in that thread, and I gave my suggestions.

    http://answers.Microsoft.com/en-us/Windows/Forum/windows_vista-windows_update/what-is-error-code-643-Windows-vistaunable-to/4ab6dd4e-e9eb-4a0f-b822-ad976e2c33c6

  • How can I find the code for the corrupted by the sfc scan files?

    I'm new to computers and I'm not aware about many of these things, I have a laptop Dell Inspiron 1545 with a Vista Home Premium operating system on a 64-bit platform, I did a sfc scan and it found 8 files corrupted. I have also a code will correct corrupted files, but I don't know where to find the codes for the corrupted files to put in the code for fixing corrupted files. I found the log file for the corrupted files and it's the same as the instructions I had to use the code to fix the corrupted files but there is nothing in the log file that corresponds with the file name needed to repair the corrupted files. Where can I find these files? Thanks for any help.

    Hello

    Not sure what you mean by you have a code to solve those? Create a sfcdetails.txt and that you post a copy
    each section of a message here - they will repeat in order to do not post duplicate sections, as appropriate.

    ------------------------------------------------------------

    Many files that SFC cannot resolve are not important.

    Start - type in the search box-> find CMD in top - click right on - RUN AS ADMIN

    put the command from below (copy and paste) in this box and her and then press ENTER.

    findstr/c: "[SR]" %windir%\logs\cbs\cbs.log > sfcdetails.txt

    who creates the sfcdetails.txt file in the folder that you are in when you run it.

    So if you're in C:\Windows\System32 > then you will need to look in that folder for the file.

    How to analyze the log file entries that the Microsoft Windows Resource Checker (SFC.exe) program
    in Windows Vista
    http://support.Microsoft.com/kb/928228

    This creates sfcdetails.txt in C:\Windows\System32 find and you can post the errors in a message
    here. NOTE: there are probably duplicates so please only post once each section error.

    You can read the newspaper/txt files easier if you right click on Notepad or Wordpad then RUN AS ADMIN - then
    You can navigate to sfcdetails.txt (in C:\Windows\System32) or cbs.log (in C:\Windows\Logs) as needed.
    (You may need to search sfcdetails.txt if it is not created in the default folders.)

    I hope this helps.

  • How to change the region code for DVD ROM on Acer Vista

    See the title, I don't ' want to rewrite this, once again. Thank you

    * original title - my computer won't let me change the region code for my disc drive. I have two different with region 1 and 2 DVDs. How can I change at will? Help! Good grief! My laptop is an Acer with windows vista.*

    Hi Shakira R.

    Please see the following article with useful information about your question:

    http://www.Microsoft.com/windows/windowsmedia/KnowledgeCenter/mediaadvice/0072.mspx

    I hope this helps!

    Debra
    Microsoft Answers Support Engineer
    Visit our Microsoft answers feedback Forum and let us know what you think

Maybe you are looking for