• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 325
  • Last Modified:

Print repeated record information (like details) INSIDE group header.

I've got a very complicated report that prints nested product information using multiple table aliases and multiple group headers.  I need to print records from a table inside one of these group headers.  It would be almost like the details section (print all - if any - matching records), but I need it to print inside the group header.  Using a subreport is not an option.  

Is there a way to make a group header repeat for multiple records?  Or can I use a complicated formula field to loop through the records and print all the data in one field?  Let me know if I need to explain myself further.  Thanks.

~bruno71
0
bruno71
Asked:
bruno71
  • 9
  • 9
  • 2
1 Solution
 
frodomanCommented:
Not sure why a subreport isn't an option because that is clearly the best approach.

The only other solution I can think of would be to force a page break after each details section and then check the option for the group header to 'Repeat on Every Page'.  This will essentially make the group header repeat for each record - as long as you can accept the 1 record per page limitation.

Other than that I don't believe there's any way (besides sub report) to accomplish this.
0
 
bruno71Author Commented:
I can't use a subreport because this is the subreport.  I'm going to insert this report into another report.  Is there a way to loop through records and print field values in a formula field?

~bruno71
0
 
ast2550Commented:
A View or Stored Procedure.  You need to prepare the data so that it is accessible for each record, then it can be printed on the header row.

What does the data look like?  What does the report look like?

0
Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
bruno71Author Commented:
The report looks something like this...  It shows the levels of our product structure.
------------------------------------------------------------------------------------------
Parent Item: 10001

      Component: 30420.................................$$$
                          Component: 20001.............$$$
                          Component: 10121.............$$$    
                          Component: 10155.............$$$
                          Component: 20242.............$$$
      Component: 10069.................................$$$    
                                                                  ----
                         Total Cost of Item 10001:   $$$$    
----------------------------------------------------------------------------------------------

Each of those levels is printed as a group header.  The report can handle 11 levels.  Group header 1 = level 1, Group header 2 = level 2, etc...  There is nothing in the Details section.  However, for each of these component items, there may be other costs associated with it.  This is what I need the report to look like...

------------------------------------------------------------------------------------------------
Parent Item: 10001
      Electric..................................................$$$
      Gas.......................................................$$$
      Labor....................................................$$$
      Overhead..............................................$$$
      Component: 30420
                          Labor................................$$$
                          Overhead..........................$$$
                          Component: 20001.............$$$
                          Component: 10121.............$$$    
                          Component: 10155.............$$$
                          Component: 20242.............$$$
      Component: 10069.................................$$$    
                                                                  ----
                         Total Cost of Item 10001:   $$$$    
------------------------------------------------------------------------------------------------

The other costs (labor, gas, overhead, etc.) are what I need to loop through and print in the header with the component items.  These cost are in a separate table linked by item number.  How do I do a View or Stored Procedure? (BTW, I'm using SQL2000).

~bruno71
0
 
ast2550Commented:
So this is a BOM.  In the first example, you listed 30420 as the first item under the parent.  Is it a level 1?  Then there are a 4 components under it.  Are each of those a level 2?  Or is it level 2 thru level 5?
0
 
frodomanCommented:
So your choices would be to either use the page breaking as I described or use a view or SP to push the data to Crystal with the additional header information duplicated.
0
 
bruno71Author Commented:
The BOM levels would look like this...

1         10001
  2       30420
    3     20001
    3     10121
    3     10155
    3     20242
  2       10069

~bruno71
0
 
ast2550Commented:
Ah, so its Macola...I looked up your other post.  I'm quite familiar with those data tables.

Does it take unnaturally long to generate that report.  I know that the BOM reports would churn and churn, before I restructured them.  Do you use all 11 levels?  It always seemed arbitrary to me to stop at 11...kind of like Spinal Tap.  I have created a Stored Procedure that accesses the data quickly and puts it into a format that can be used in the details row.  I'm not going to focus on the Other costs but they should be able to be incorporated in.  And, I'll describe it a bit before I list the stored procedure.  This procedure prints the stuff I need to make to report work, so it very well may be different for you, but hopefully you'll get the idea.

Standard BOM:
Parent
Child
Qty

Stored Procesure BOM:
Parent
1st Level PN
1st Level Qty
2nd Level PN
2nd Level Qty
3rd Level PN
3rd Level Qty
...
Bottom level Child


I forget how many levels I went down to, but I think it is much less than 11 and we use 5 max.

So, all you really care about is that the Bottom Level Child.  It prints on each detail row.  The query should return the data so that the first item listed is the 30420, then 20001, then 10121, each in their own row.  The other stuff helps calculate the nested qty and cost since it is additive (if you need 3 30420's then you need 3 * its qty of 20001).

To create the Stored Procedure open up Query Analyzer and paste this thing and run it.  Once it has been run it can be executed with this command

EXEC BOM_IM_procedure '*** PUT YOUR ITEM_NO INSIDE THESE QUOTES ***'

Stored Procedure
-----------------------------------------------------------------------------------

CREATE PROCEDURE [dbo].[BOM_IM_procedure] @ITEM_NO CHAR(15) AS


SELECT     dbo.BMPRDSTR_SQL.item_no AS Parent_PN, dbo.BMPRDSTR_SQL.comp_item_no AS [1_PN], dbo.BMPRDSTR_SQL.seq_no AS [1_SEQ],
                      dbo.BMPRDSTR_SQL.qty_per_par AS [1_QTY],  dbo.IMITMIDX_SQL.stocked_fg AS [1_STK], dbo.IMITMIDX_SQL.pur_or_mfg AS [1_MP],' ' AS [2_PN], ' ' AS [2_SEQ], 1 AS [2_QTY], ' ' AS [2_STK], ' ' AS [2_MP], ' ' AS [3_PN], ' ' AS [3_SEQ],
                      1 AS [3_QTY], ' ' AS [3_STK], ' ' AS [3_MP], ' ' AS [4_PN], ' ' AS [4_SEQ], 1 AS [4_QTY], ' ' AS [4_STK], ' ' AS [4_MP], ' ' AS [5_PN], ' ' AS [5_SEQ],
                      1 AS [5_QTY], ' ' AS [5_STK], ' ' AS [5_MP], ' ' AS [6_PN], ' ' AS [6_SEQ], 1 AS [6_QTY], ' ' AS [6_STK], ' ' AS [6_MP], ' ' AS [7_PN], ' ' AS [7_SEQ],
                      1 AS [7_QTY], ' ' AS [7_STK], ' ' AS [7_MP], ' ' AS [8_PN], ' ' AS [8_SEQ], 1 AS [8_QTY], ' ' AS [9_PN], ' ' AS [9_SEQ], 1 AS [9_QTY], ' ' AS [10_PN],
                      ' ' AS [10_SEQ], 1 AS [10_QTY], ' ' AS [11_PN], ' ' AS [11_SEQ], 1 AS [11_QTY], dbo.BMPRDSTR_SQL.seq_no AS CHILD_SEQ,
                      dbo.BMPRDSTR_SQL.comp_item_no AS CHILD_PN, dbo.BMPRDSTR_SQL.qty_per_par AS CHILD_QTY,
                      dbo.BMPRDSTR_SQL.user_def_fld AS CHILD_FURN, dbo.BMPRDSTR_SQL.item_no AS CHILDS_PARENT_PN, dbo.BMPRDSTR_SQL.reference_1,
                      dbo.BMPRDSTR_SQL.reference_2, dbo.BMPRDSTR_SQL.reference_3, dbo.IMITMIDX_SQL.item_desc_1 AS PARENT_DESC,
                      dbo.IMITMIDX_SQL.item_desc_1 AS CHILD_DESC, dbo.IMITMIDX_SQL.uom AS CHILD_UOM, dbo.IMITMIDX_SQL.last_item_revision AS CHILD_REV,
                      dbo.IMITMIDX_SQL.user_def_fld_1 AS CHILD_SPARE, dbo.IMINVLOC_SQL.vend_no AS CHILD_VEND_NO,
                      dbo.IMINVLOC_SQL.user_def_fld_1 AS CHILD_BIN,
                      dbo.IMINVLOC_SQL.avg_cost AS CHILD_AVG_COST, IMITMIDX_SQL.stocked_fg AS CHILD_STK, IMITMIDX_SQL.controlled_fg AS CHILD_CTL
FROM         dbo.BMPRDSTR_SQL INNER JOIN
                      dbo.IMITMIDX_SQL ON dbo.BMPRDSTR_SQL.comp_item_no = dbo.IMITMIDX_SQL.item_no INNER JOIN
                      dbo.IMINVLOC_SQL ON dbo.IMITMIDX_SQL.item_no = dbo.IMINVLOC_SQL.item_no
WHERE     dbo.BMPRDSTR_SQL.item_no = @ITEM_NO
UNION ALL
SELECT     dbo.BMPRDSTR_SQL.item_no AS Parent_PN, dbo.BMPRDSTR_SQL.comp_item_no AS [1_PN], dbo.BMPRDSTR_SQL.seq_no AS [1_SEQ],
                      dbo.BMPRDSTR_SQL.qty_per_par AS [1_QTY],  dbo.IMITMIDX_SQL.stocked_fg AS [1_STK], dbo.IMITMIDX_SQL.pur_or_mfg AS [1_MP], BMPRDSTR_SQL_1.comp_item_no AS [2_PN], BMPRDSTR_SQL_1.seq_no AS [2_SEQ],
                      BMPRDSTR_SQL_1.qty_per_par AS [2_QTY], IMITMIDX_SQL_1.stocked_fg AS [2_STK], IMITMIDX_SQL_1.pur_or_mfg AS [2_MP], ' ' AS [3_PN],
                      ' ' AS [3_SEQ], 1 AS [3_QTY], ' ' AS [3_STK], ' ' AS [3_MP], ' ' AS [4_PN], ' ' AS [4_SEQ], 1 AS [4_QTY], ' ' AS [4_STK], ' ' AS [4_MP], ' ' AS [5_PN],
                      ' ' AS [5_SEQ], 1 AS [5_QTY], ' ' AS [5_STK], ' ' AS [5_MP], ' ' AS [6_PN], ' ' AS [6_SEQ], 1 AS [6_QTY], ' ' AS [6_STK], ' ' AS [6_MP], ' ' AS [7_PN],
                      ' ' AS [7_SEQ], 1 AS [7_QTY], ' ' AS [7_STK], ' ' AS [7_MP], ' ' AS [8_PN], ' ' AS [8_SEQ], 1 AS [8_QTY], ' ' AS [9_PN], ' ' AS [9_SEQ], 1 AS [9_QTY],
                      ' ' AS [10_PN], ' ' AS [10_SEQ], 1 AS [10_QTY], ' ' AS [11_PN], ' ' AS [11_SEQ], 1 AS [11_QTY], BMPRDSTR_SQL_1.seq_no AS CHILD_SEQ,
                      BMPRDSTR_SQL_1.comp_item_no AS CHILD_PN, dbo.BMPRDSTR_SQL.qty_per_par * BMPRDSTR_SQL_1.qty_per_par AS CHILD_QTY,
                      BMPRDSTR_SQL_1.user_def_fld AS CHILD_FURN, BMPRDSTR_SQL_1.item_no AS CHILDS_PARENT_PN, BMPRDSTR_SQL_1.reference_1,
                      BMPRDSTR_SQL_1.reference_2, BMPRDSTR_SQL_1.reference_3, dbo.IMITMIDX_SQL.item_desc_1 AS PARENT_DESC,
                      IMITMIDX_SQL_1.item_desc_1 AS CHILD_DESC, IMITMIDX_SQL_1.uom AS CHILD_UOM, IMITMIDX_SQL_1.last_item_revision AS CHILD_REV,
                      IMITMIDX_SQL_1.user_def_fld_1 AS CHILD_SPARE, dbo.IMINVLOC_SQL.vend_no AS CHILD_VEND_NO,
                      dbo.IMINVLOC_SQL.user_def_fld_1 AS CHILD_BIN,
                      dbo.IMINVLOC_SQL.avg_cost AS CHILD_AVG_COST, IMITMIDX_SQL_1.stocked_fg AS CHILD_STK, IMITMIDX_SQL_1.controlled_fg AS CHILD_CTL
FROM         dbo.BMPRDSTR_SQL INNER JOIN
                      dbo.BMPRDSTR_SQL BMPRDSTR_SQL_1 ON dbo.BMPRDSTR_SQL.comp_item_no = BMPRDSTR_SQL_1.item_no INNER JOIN
                      dbo.IMITMIDX_SQL ON dbo.BMPRDSTR_SQL.comp_item_no = dbo.IMITMIDX_SQL.item_no INNER JOIN
                      dbo.IMITMIDX_SQL IMITMIDX_SQL_1 ON BMPRDSTR_SQL_1.comp_item_no = IMITMIDX_SQL_1.item_no INNER JOIN
                      dbo.IMINVLOC_SQL ON IMITMIDX_SQL_1.item_no = dbo.IMINVLOC_SQL.item_no
WHERE     dbo.BMPRDSTR_SQL.item_no = @ITEM_NO
UNION ALL
SELECT     dbo.BMPRDSTR_SQL.item_no AS Parent_PN, dbo.BMPRDSTR_SQL.comp_item_no AS [1_PN], dbo.BMPRDSTR_SQL.seq_no AS [1_SEQ],
                      dbo.BMPRDSTR_SQL.qty_per_par AS [1_QTY],  dbo.IMITMIDX_SQL.stocked_fg AS [1_STK], dbo.IMITMIDX_SQL.pur_or_mfg AS [1_MP], BMPRDSTR_SQL_1.comp_item_no AS [2_PN], BMPRDSTR_SQL_1.seq_no AS [2_SEQ],
                      BMPRDSTR_SQL_1.qty_per_par AS [2_QTY], IMITMIDX_SQL_1.stocked_fg AS [2_STK], IMITMIDX_SQL_1.pur_or_mfg AS [2_MP],
                      BMPRDSTR_SQL_2.comp_item_no AS [3_PN], BMPRDSTR_SQL_2.seq_no AS [3_SEQ], BMPRDSTR_SQL_2.qty_per_par AS [3_QTY],
                      IMITMIDX_SQL_2.stocked_fg AS [3_STK], IMITMIDX_SQL_2.pur_or_mfg AS [3_MP], ' ' AS [4_PN], ' ' AS [4_SEQ], 1 AS [4_QTY], ' ' AS [4_STK],
                      ' ' AS [4_MP], ' ' AS [5_PN], ' ' AS [5_SEQ], 1 AS [5_QTY], ' ' AS [5_STK], ' ' AS [5_MP], ' ' AS [6_PN], ' ' AS [6_SEQ], 1 AS [6_QTY], ' ' AS [6_STK],
                      ' ' AS [6_MP], ' ' AS [7_PN], ' ' AS [7_SEQ], 1 AS [7_QTY], ' ' AS [7_STK], ' ' AS [7_MP], ' ' AS [8_PN], ' ' AS [8_SEQ], 1 AS [8_QTY], ' ' AS [9_PN],
                      ' ' AS [9_SEQ], 1 AS [9_QTY], ' ' AS [10_PN], ' ' AS [10_SEQ], 1 AS [10_QTY], ' ' AS [11_PN], ' ' AS [11_SEQ], 1 AS [11_QTY],
                      BMPRDSTR_SQL_2.seq_no AS CHILD_SEQ, BMPRDSTR_SQL_2.comp_item_no AS CHILD_PN,
                      dbo.BMPRDSTR_SQL.qty_per_par * BMPRDSTR_SQL_1.qty_per_par * BMPRDSTR_SQL_2.qty_per_par AS CHILD_QTY,
                      BMPRDSTR_SQL_2.user_def_fld AS CHILD_FURN, BMPRDSTR_SQL_2.item_no AS CHILDS_PARENT_PN, BMPRDSTR_SQL_2.reference_1,
                      BMPRDSTR_SQL_2.reference_2, BMPRDSTR_SQL_2.reference_3, dbo.IMITMIDX_SQL.item_desc_1 AS PARENT_DESC,
                      IMITMIDX_SQL_2.item_desc_1 AS CHILD_DESC, IMITMIDX_SQL_2.uom AS CHILD_UOM, IMITMIDX_SQL_2.last_item_revision AS CHILD_REV,
                      IMITMIDX_SQL_2.user_def_fld_1 AS CHILD_SPARE, dbo.IMINVLOC_SQL.vend_no AS CHILD_VEND_NO,
                      dbo.IMINVLOC_SQL.user_def_fld_1 AS CHILD_BIN,
                      dbo.IMINVLOC_SQL.avg_cost AS CHILD_AVG_COST, IMITMIDX_SQL_2.stocked_fg AS CHILD_STK, IMITMIDX_SQL_2.controlled_fg AS CHILD_CTL
FROM         dbo.BMPRDSTR_SQL INNER JOIN
                      dbo.BMPRDSTR_SQL BMPRDSTR_SQL_1 ON dbo.BMPRDSTR_SQL.comp_item_no = BMPRDSTR_SQL_1.item_no INNER JOIN
                      dbo.BMPRDSTR_SQL BMPRDSTR_SQL_2 ON BMPRDSTR_SQL_1.comp_item_no = BMPRDSTR_SQL_2.item_no INNER JOIN
                      dbo.IMITMIDX_SQL ON dbo.BMPRDSTR_SQL.comp_item_no = dbo.IMITMIDX_SQL.item_no INNER JOIN
                      dbo.IMITMIDX_SQL IMITMIDX_SQL_1 ON BMPRDSTR_SQL_1.comp_item_no = IMITMIDX_SQL_1.item_no INNER JOIN
                      dbo.IMITMIDX_SQL IMITMIDX_SQL_2 ON BMPRDSTR_SQL_2.comp_item_no = IMITMIDX_SQL_2.item_no INNER JOIN
                      dbo.IMINVLOC_SQL ON IMITMIDX_SQL_2.item_no = dbo.IMINVLOC_SQL.item_no
WHERE     dbo.BMPRDSTR_SQL.item_no = @ITEM_NO
UNION ALL
SELECT     dbo.BMPRDSTR_SQL.item_no AS Parent_PN, dbo.BMPRDSTR_SQL.comp_item_no AS [1_PN], dbo.BMPRDSTR_SQL.seq_no AS [1_SEQ],
                      dbo.BMPRDSTR_SQL.qty_per_par AS [1_QTY],  dbo.IMITMIDX_SQL.stocked_fg AS [1_STK], dbo.IMITMIDX_SQL.pur_or_mfg AS [1_MP], BMPRDSTR_SQL_1.comp_item_no AS [2_PN], BMPRDSTR_SQL_1.seq_no AS [2_SEQ],
                      BMPRDSTR_SQL_1.qty_per_par AS [2_QTY], IMITMIDX_SQL_1.stocked_fg AS [2_STK], IMITMIDX_SQL_1.pur_or_mfg AS [2_MP],
                      BMPRDSTR_SQL_2.comp_item_no AS [3_PN], BMPRDSTR_SQL_2.seq_no AS [3_SEQ], BMPRDSTR_SQL_2.qty_per_par AS [3_QTY],
                      IMITMIDX_SQL_2.stocked_fg AS [3_STK], IMITMIDX_SQL_2.pur_or_mfg AS [3_MP], BMPRDSTR_SQL_3.comp_item_no AS [4_PN],
                      BMPRDSTR_SQL_3.seq_no AS [4_SEQ], BMPRDSTR_SQL_3.qty_per_par AS [4_QTY], IMITMIDX_SQL_3.stocked_fg AS [4_STK],
                      IMITMIDX_SQL_3.pur_or_mfg AS [4_MP], ' ' AS [5_PN], ' ' AS [5_SEQ], 1 AS [5_QTY], ' ' AS [5_STK], ' ' AS [5_MP], ' ' AS [6_PN], ' ' AS [6_SEQ],
                      1 AS [6_QTY], ' ' AS [6_STK], ' ' AS [6_MP], ' ' AS [7_PN], ' ' AS [7_SEQ], 1 AS [7_QTY], ' ' AS [7_STK], ' ' AS [7_MP], ' ' AS [8_PN], ' ' AS [8_SEQ],
                      1 AS [8_QTY], ' ' AS [9_PN], ' ' AS [9_SEQ], 1 AS [9_QTY], ' ' AS [10_PN], ' ' AS [10_SEQ], 1 AS [10_QTY], ' ' AS [11_PN], ' ' AS [11_SEQ], 1 AS [11_QTY],
                      BMPRDSTR_SQL_3.seq_no AS CHILD_SEQ, BMPRDSTR_SQL_3.comp_item_no AS CHILD_PN,
                      dbo.BMPRDSTR_SQL.qty_per_par * BMPRDSTR_SQL_1.qty_per_par * BMPRDSTR_SQL_2.qty_per_par * BMPRDSTR_SQL_3.qty_per_par AS CHILD_QTY,
                       BMPRDSTR_SQL_3.user_def_fld AS CHILD_FURN, BMPRDSTR_SQL_3.item_no AS CHILDS_PARENT_PN, BMPRDSTR_SQL_3.reference_1,
                      BMPRDSTR_SQL_3.reference_2, BMPRDSTR_SQL_3.reference_3, dbo.IMITMIDX_SQL.item_desc_1 AS PARENT_DESC,
                      IMITMIDX_SQL_3.item_desc_1 AS CHILD_DESC, IMITMIDX_SQL_3.uom AS CHILD_UOM, IMITMIDX_SQL_3.last_item_revision AS CHILD_REV,
                      IMITMIDX_SQL_3.user_def_fld_1 AS CHILD_SPARE, dbo.IMINVLOC_SQL.vend_no AS CHILD_VEND_NO,
                      dbo.IMINVLOC_SQL.user_def_fld_1 AS CHILD_BIN,
                      dbo.IMINVLOC_SQL.avg_cost AS CHILD_AVG_COST, IMITMIDX_SQL_3.stocked_fg AS CHILD_STK, IMITMIDX_SQL_3.controlled_fg AS CHILD_CTL
FROM         dbo.BMPRDSTR_SQL INNER JOIN
                      dbo.BMPRDSTR_SQL BMPRDSTR_SQL_1 ON dbo.BMPRDSTR_SQL.comp_item_no = BMPRDSTR_SQL_1.item_no INNER JOIN
                      dbo.BMPRDSTR_SQL BMPRDSTR_SQL_2 ON BMPRDSTR_SQL_1.comp_item_no = BMPRDSTR_SQL_2.item_no INNER JOIN
                      dbo.BMPRDSTR_SQL BMPRDSTR_SQL_3 ON BMPRDSTR_SQL_2.comp_item_no = BMPRDSTR_SQL_3.item_no INNER JOIN
                      dbo.IMITMIDX_SQL ON dbo.BMPRDSTR_SQL.comp_item_no = dbo.IMITMIDX_SQL.item_no INNER JOIN
                      dbo.IMITMIDX_SQL IMITMIDX_SQL_1 ON BMPRDSTR_SQL_1.comp_item_no = IMITMIDX_SQL_1.item_no INNER JOIN
                      dbo.IMITMIDX_SQL IMITMIDX_SQL_2 ON BMPRDSTR_SQL_2.comp_item_no = IMITMIDX_SQL_2.item_no INNER JOIN
                      dbo.IMITMIDX_SQL IMITMIDX_SQL_3 ON BMPRDSTR_SQL_3.comp_item_no = IMITMIDX_SQL_3.item_no INNER JOIN
                      dbo.IMINVLOC_SQL ON IMITMIDX_SQL_3.item_no = dbo.IMINVLOC_SQL.item_no
WHERE     dbo.BMPRDSTR_SQL.item_no = @ITEM_NO
UNION ALL
SELECT     dbo.BMPRDSTR_SQL.item_no AS Parent_PN, dbo.BMPRDSTR_SQL.comp_item_no AS [1_PN], dbo.BMPRDSTR_SQL.seq_no AS [1_SEQ],
                      dbo.BMPRDSTR_SQL.qty_per_par AS [1_QTY],  dbo.IMITMIDX_SQL.stocked_fg AS [1_STK], dbo.IMITMIDX_SQL.pur_or_mfg AS [1_MP], BMPRDSTR_SQL_1.comp_item_no AS [2_PN], BMPRDSTR_SQL_1.seq_no AS [2_SEQ],
                      BMPRDSTR_SQL_1.qty_per_par AS [2_QTY], IMITMIDX_SQL_1.stocked_fg AS [2_STK], IMITMIDX_SQL_1.pur_or_mfg AS [2_MP],
                      BMPRDSTR_SQL_2.comp_item_no AS [3_PN], BMPRDSTR_SQL_2.seq_no AS [3_SEQ], BMPRDSTR_SQL_2.qty_per_par AS [3_QTY],
                      IMITMIDX_SQL_2.stocked_fg AS [3_STK], IMITMIDX_SQL_2.pur_or_mfg AS [3_MP], BMPRDSTR_SQL_3.comp_item_no AS [4_PN],
                      BMPRDSTR_SQL_3.seq_no AS [4_SEQ], BMPRDSTR_SQL_3.qty_per_par AS [4_QTY], IMITMIDX_SQL_3.stocked_fg AS [4_STK],
                      IMITMIDX_SQL_3.pur_or_mfg AS [4_MP], BMPRDSTR_SQL_4.comp_item_no AS [5_PN], BMPRDSTR_SQL_4.seq_no AS [5_SEQ],
                      BMPRDSTR_SQL_4.qty_per_par AS [5_QTY], IMITMIDX_SQL_4.stocked_fg AS [5_STK], IMITMIDX_SQL_4.pur_or_mfg AS [5_MP], ' ' AS [6_PN],
                      ' ' AS [6_SEQ], 1 AS [6_QTY], ' ' AS [6_STK], ' ' AS [6_MP], ' ' AS [7_PN], ' ' AS [7_SEQ], 1 AS [7_QTY], ' ' AS [7_STK], ' ' AS [7_MP], ' ' AS [8_PN],
                      ' ' AS [8_SEQ], 1 AS [8_QTY], ' ' AS [9_PN], ' ' AS [9_SEQ], 1 AS [9_QTY], ' ' AS [10_PN], ' ' AS [10_SEQ], 1 AS [10_QTY], ' ' AS [11_PN], ' ' AS [11_SEQ],
                      1 AS [11_QTY], BMPRDSTR_SQL_4.seq_no AS CHILD_SEQ, BMPRDSTR_SQL_4.comp_item_no AS CHILD_PN,
                      dbo.BMPRDSTR_SQL.qty_per_par * BMPRDSTR_SQL_1.qty_per_par * BMPRDSTR_SQL_2.qty_per_par * BMPRDSTR_SQL_3.qty_per_par * BMPRDSTR_SQL_4.qty_per_par
                       AS CHILD_QTY, BMPRDSTR_SQL_4.user_def_fld AS CHILD_FURN, BMPRDSTR_SQL_4.item_no AS CHILDS_PARENT_PN,
                      BMPRDSTR_SQL_4.reference_1, BMPRDSTR_SQL_4.reference_2, BMPRDSTR_SQL_4.reference_3,
                      dbo.IMITMIDX_SQL.item_desc_1 AS PARENT_DESC, IMITMIDX_SQL_4.item_desc_1 AS CHILD_DESC, IMITMIDX_SQL_4.uom AS CHILD_UOM,
                      IMITMIDX_SQL_4.last_item_revision AS CHILD_REV, IMITMIDX_SQL_4.user_def_fld_1 AS CHILD_SPARE,
                      dbo.IMINVLOC_SQL.vend_no AS CHILD_VEND_NO, dbo.IMINVLOC_SQL.user_def_fld_1 AS CHILD_BIN,
                      dbo.IMINVLOC_SQL.avg_cost AS CHILD_AVG_COST, IMITMIDX_SQL_4.stocked_fg AS CHILD_STK, IMITMIDX_SQL_4.controlled_fg AS CHILD_CTL
FROM         dbo.BMPRDSTR_SQL INNER JOIN
                      dbo.BMPRDSTR_SQL BMPRDSTR_SQL_1 ON dbo.BMPRDSTR_SQL.comp_item_no = BMPRDSTR_SQL_1.item_no INNER JOIN
                      dbo.BMPRDSTR_SQL BMPRDSTR_SQL_2 ON BMPRDSTR_SQL_1.comp_item_no = BMPRDSTR_SQL_2.item_no INNER JOIN
                      dbo.BMPRDSTR_SQL BMPRDSTR_SQL_3 ON BMPRDSTR_SQL_2.comp_item_no = BMPRDSTR_SQL_3.item_no INNER JOIN
                      dbo.BMPRDSTR_SQL BMPRDSTR_SQL_4 ON BMPRDSTR_SQL_3.comp_item_no = BMPRDSTR_SQL_4.item_no INNER JOIN
                      dbo.IMITMIDX_SQL ON dbo.BMPRDSTR_SQL.comp_item_no = dbo.IMITMIDX_SQL.item_no INNER JOIN
                      dbo.IMITMIDX_SQL IMITMIDX_SQL_1 ON BMPRDSTR_SQL_1.comp_item_no = IMITMIDX_SQL_1.item_no INNER JOIN
                      dbo.IMITMIDX_SQL IMITMIDX_SQL_2 ON BMPRDSTR_SQL_2.comp_item_no = IMITMIDX_SQL_2.item_no INNER JOIN
                      dbo.IMITMIDX_SQL IMITMIDX_SQL_3 ON BMPRDSTR_SQL_3.comp_item_no = IMITMIDX_SQL_3.item_no INNER JOIN
                      dbo.IMITMIDX_SQL IMITMIDX_SQL_4 ON BMPRDSTR_SQL_4.comp_item_no = IMITMIDX_SQL_4.item_no INNER JOIN
                      dbo.IMINVLOC_SQL ON IMITMIDX_SQL_4.item_no = dbo.IMINVLOC_SQL.item_no
WHERE     dbo.BMPRDSTR_SQL.item_no = @ITEM_NO
UNION ALL
SELECT     dbo.BMPRDSTR_SQL.item_no AS Parent_PN, dbo.BMPRDSTR_SQL.comp_item_no AS [1_PN], dbo.BMPRDSTR_SQL.seq_no AS [1_SEQ],
                      dbo.BMPRDSTR_SQL.qty_per_par AS [1_QTY],  dbo.IMITMIDX_SQL.stocked_fg AS [1_STK], dbo.IMITMIDX_SQL.pur_or_mfg AS [1_MP], BMPRDSTR_SQL_1.comp_item_no AS [2_PN], BMPRDSTR_SQL_1.seq_no AS [2_SEQ],
                      BMPRDSTR_SQL_1.qty_per_par AS [2_QTY], IMITMIDX_SQL_1.stocked_fg AS [2_STK], IMITMIDX_SQL_1.pur_or_mfg AS [2_MP],
                      BMPRDSTR_SQL_2.comp_item_no AS [3_PN], BMPRDSTR_SQL_2.seq_no AS [3_SEQ], BMPRDSTR_SQL_2.qty_per_par AS [3_QTY],
                      IMITMIDX_SQL_2.stocked_fg AS [3_STK], IMITMIDX_SQL_2.pur_or_mfg AS [3_MP], BMPRDSTR_SQL_3.comp_item_no AS [4_PN],
                      BMPRDSTR_SQL_3.seq_no AS [4_SEQ], BMPRDSTR_SQL_3.qty_per_par AS [4_QTY], IMITMIDX_SQL_3.stocked_fg AS [4_STK],
                      IMITMIDX_SQL_3.pur_or_mfg AS [4_MP], BMPRDSTR_SQL_4.comp_item_no AS [5_PN], BMPRDSTR_SQL_4.seq_no AS [5_SEQ],
                      BMPRDSTR_SQL_4.qty_per_par AS [5_QTY], IMITMIDX_SQL_4.stocked_fg AS [5_STK], IMITMIDX_SQL_4.pur_or_mfg AS [5_MP],
                      BMPRDSTR_SQL_5.comp_item_no AS [6_PN], BMPRDSTR_SQL_5.seq_no AS [6_SEQ], BMPRDSTR_SQL_5.qty_per_par AS [6_QTY],
                      IMITMIDX_SQL_5.stocked_fg AS [6_STK], IMITMIDX_SQL_5.pur_or_mfg AS [6_MP], ' ' AS [7_PN], ' ' AS [7_SEQ], 1 AS [7_QTY], ' ' AS [7_STK],
                      ' ' AS [7_MP], ' ' AS [8_PN], ' ' AS [8_SEQ], 1 AS [8_QTY], ' ' AS [9_PN], ' ' AS [9_SEQ], 1 AS [9_QTY], ' ' AS [10_PN], ' ' AS [10_SEQ], 1 AS [10_QTY],
                      ' ' AS [11_PN], ' ' AS [11_SEQ], 1 AS [11_QTY], BMPRDSTR_SQL_5.seq_no AS CHILD_SEQ, BMPRDSTR_SQL_5.comp_item_no AS CHILD_PN,
                      dbo.BMPRDSTR_SQL.qty_per_par * BMPRDSTR_SQL_1.qty_per_par * BMPRDSTR_SQL_2.qty_per_par * BMPRDSTR_SQL_3.qty_per_par * BMPRDSTR_SQL_4.qty_per_par
                       * BMPRDSTR_SQL_5.qty_per_par AS CHILD_QTY, BMPRDSTR_SQL_5.user_def_fld AS CHILD_FURN,
                      BMPRDSTR_SQL_5.item_no AS CHILDS_PARENT_PN, BMPRDSTR_SQL_5.reference_1, BMPRDSTR_SQL_5.reference_2,
                      BMPRDSTR_SQL_5.reference_3, dbo.IMITMIDX_SQL.item_desc_1 AS PARENT_DESC, IMITMIDX_SQL_5.item_desc_1 AS CHILD_DESC,
                      IMITMIDX_SQL_5.uom AS CHILD_UOM, IMITMIDX_SQL_5.last_item_revision AS CHILD_REV, IMITMIDX_SQL_5.user_def_fld_1 AS CHILD_SPARE,
                      dbo.IMINVLOC_SQL.vend_no AS CHILD_VEND_NO, dbo.IMINVLOC_SQL.user_def_fld_1 AS CHILD_BIN,
                      dbo.IMINVLOC_SQL.avg_cost AS CHILD_AVG_COST, IMITMIDX_SQL_5.stocked_fg AS CHILD_STK, IMITMIDX_SQL_5.controlled_fg AS CHILD_CTL
FROM         dbo.BMPRDSTR_SQL INNER JOIN
                      dbo.BMPRDSTR_SQL BMPRDSTR_SQL_1 ON dbo.BMPRDSTR_SQL.comp_item_no = BMPRDSTR_SQL_1.item_no INNER JOIN
                      dbo.BMPRDSTR_SQL BMPRDSTR_SQL_2 ON BMPRDSTR_SQL_1.comp_item_no = BMPRDSTR_SQL_2.item_no INNER JOIN
                      dbo.BMPRDSTR_SQL BMPRDSTR_SQL_3 ON BMPRDSTR_SQL_2.comp_item_no = BMPRDSTR_SQL_3.item_no INNER JOIN
                      dbo.BMPRDSTR_SQL BMPRDSTR_SQL_4 ON BMPRDSTR_SQL_3.comp_item_no = BMPRDSTR_SQL_4.item_no INNER JOIN
                      dbo.BMPRDSTR_SQL BMPRDSTR_SQL_5 ON BMPRDSTR_SQL_4.comp_item_no = BMPRDSTR_SQL_5.item_no INNER JOIN
                      dbo.IMITMIDX_SQL ON dbo.BMPRDSTR_SQL.comp_item_no = dbo.IMITMIDX_SQL.item_no INNER JOIN
                      dbo.IMITMIDX_SQL IMITMIDX_SQL_1 ON BMPRDSTR_SQL_1.comp_item_no = IMITMIDX_SQL_1.item_no INNER JOIN
                      dbo.IMITMIDX_SQL IMITMIDX_SQL_2 ON BMPRDSTR_SQL_2.comp_item_no = IMITMIDX_SQL_2.item_no INNER JOIN
                      dbo.IMITMIDX_SQL IMITMIDX_SQL_3 ON BMPRDSTR_SQL_3.comp_item_no = IMITMIDX_SQL_3.item_no INNER JOIN
                      dbo.IMITMIDX_SQL IMITMIDX_SQL_4 ON BMPRDSTR_SQL_4.comp_item_no = IMITMIDX_SQL_4.item_no INNER JOIN
                      dbo.IMITMIDX_SQL IMITMIDX_SQL_5 ON BMPRDSTR_SQL_5.comp_item_no = IMITMIDX_SQL_5.item_no INNER JOIN
                      dbo.IMINVLOC_SQL ON IMITMIDX_SQL_5.item_no = dbo.IMINVLOC_SQL.item_no
WHERE     dbo.BMPRDSTR_SQL.item_no = @ITEM_NO
UNION ALL
SELECT     dbo.BMPRDSTR_SQL.item_no AS Parent_PN, dbo.BMPRDSTR_SQL.comp_item_no AS [1_PN], dbo.BMPRDSTR_SQL.seq_no AS [1_SEQ],
                      dbo.BMPRDSTR_SQL.qty_per_par AS [1_QTY],  dbo.IMITMIDX_SQL.stocked_fg AS [1_STK], dbo.IMITMIDX_SQL.pur_or_mfg AS [1_MP], BMPRDSTR_SQL_1.comp_item_no AS [2_PN], BMPRDSTR_SQL_1.seq_no AS [2_SEQ],
                      BMPRDSTR_SQL_1.qty_per_par AS [2_QTY], IMITMIDX_SQL_1.stocked_fg AS [2_STK], IMITMIDX_SQL_1.pur_or_mfg AS [2_MP],
                      BMPRDSTR_SQL_2.comp_item_no AS [3_PN], BMPRDSTR_SQL_2.seq_no AS [3_SEQ], BMPRDSTR_SQL_2.qty_per_par AS [3_QTY],
                      IMITMIDX_SQL_2.stocked_fg AS [3_STK], IMITMIDX_SQL_2.pur_or_mfg AS [3_MP], BMPRDSTR_SQL_3.comp_item_no AS [4_PN],
                      BMPRDSTR_SQL_3.seq_no AS [4_SEQ], BMPRDSTR_SQL_3.qty_per_par AS [4_QTY], IMITMIDX_SQL_3.stocked_fg AS [4_STK],
                      IMITMIDX_SQL_3.pur_or_mfg AS [4_MP], BMPRDSTR_SQL_4.comp_item_no AS [5_PN], BMPRDSTR_SQL_4.seq_no AS [5_SEQ],
                      BMPRDSTR_SQL_4.qty_per_par AS [5_QTY], IMITMIDX_SQL_4.stocked_fg AS [5_STK], IMITMIDX_SQL_4.pur_or_mfg AS [5_MP],
                      BMPRDSTR_SQL_5.comp_item_no AS [6_PN], BMPRDSTR_SQL_5.seq_no AS [6_SEQ], BMPRDSTR_SQL_5.qty_per_par AS [6_QTY],
                      IMITMIDX_SQL_5.stocked_fg AS [6_STK], IMITMIDX_SQL_5.pur_or_mfg AS [6_MP], BMPRDSTR_SQL_6.comp_item_no AS [7_PN],
                      BMPRDSTR_SQL_6.seq_no AS [7_SEQ], BMPRDSTR_SQL_6.qty_per_par AS [7_QTY], IMITMIDX_SQL_6.stocked_fg AS [7_STK],
                      IMITMIDX_SQL_6.pur_or_mfg AS [7_MP], ' ' AS [8_PN], ' ' AS [8_SEQ], 1 AS [8_QTY], ' ' AS [9_PN], ' ' AS [9_SEQ], 1 AS [9_QTY], ' ' AS [10_PN],
                      ' ' AS [10_SEQ], 1 AS [10_QTY], ' ' AS [11_PN], ' ' AS [11_SEQ], 1 AS [11_QTY], BMPRDSTR_SQL_6.seq_no AS CHILD_SEQ,
                      BMPRDSTR_SQL_6.comp_item_no AS CHILD_PN,
                      dbo.BMPRDSTR_SQL.qty_per_par * BMPRDSTR_SQL_1.qty_per_par * BMPRDSTR_SQL_2.qty_per_par * BMPRDSTR_SQL_3.qty_per_par * BMPRDSTR_SQL_4.qty_per_par
                       * BMPRDSTR_SQL_5.qty_per_par * BMPRDSTR_SQL_6.qty_per_par AS CHILD_QTY, BMPRDSTR_SQL_6.user_def_fld AS CHILD_FURN,
                      BMPRDSTR_SQL_6.item_no AS CHILDS_PARENT_PN, BMPRDSTR_SQL_6.reference_1, BMPRDSTR_SQL_6.reference_2,
                      BMPRDSTR_SQL_6.reference_3, dbo.IMITMIDX_SQL.item_desc_1 AS PARENT_DESC, IMITMIDX_SQL_6.item_desc_1 AS CHILD_DESC,
                      IMITMIDX_SQL_6.uom AS CHILD_UOM, IMITMIDX_SQL_6.last_item_revision AS CHILD_REV, IMITMIDX_SQL_6.user_def_fld_1 AS CHILD_SPARE,
                      dbo.IMINVLOC_SQL.vend_no AS CHILD_VEND_NO, dbo.IMINVLOC_SQL.user_def_fld_1 AS CHILD_BIN,
                      dbo.IMINVLOC_SQL.avg_cost AS CHILD_AVG_COST, IMITMIDX_SQL_6.stocked_fg AS CHILD_STK, IMITMIDX_SQL_6.controlled_fg AS CHILD_CTL
FROM         dbo.BMPRDSTR_SQL INNER JOIN
                      dbo.BMPRDSTR_SQL BMPRDSTR_SQL_1 ON dbo.BMPRDSTR_SQL.comp_item_no = BMPRDSTR_SQL_1.item_no INNER JOIN
                      dbo.BMPRDSTR_SQL BMPRDSTR_SQL_2 ON BMPRDSTR_SQL_1.comp_item_no = BMPRDSTR_SQL_2.item_no INNER JOIN
                      dbo.BMPRDSTR_SQL BMPRDSTR_SQL_3 ON BMPRDSTR_SQL_2.comp_item_no = BMPRDSTR_SQL_3.item_no INNER JOIN
                      dbo.BMPRDSTR_SQL BMPRDSTR_SQL_4 ON BMPRDSTR_SQL_3.comp_item_no = BMPRDSTR_SQL_4.item_no INNER JOIN
                      dbo.BMPRDSTR_SQL BMPRDSTR_SQL_5 ON BMPRDSTR_SQL_4.comp_item_no = BMPRDSTR_SQL_5.item_no INNER JOIN
                      dbo.BMPRDSTR_SQL BMPRDSTR_SQL_6 ON BMPRDSTR_SQL_5.comp_item_no = BMPRDSTR_SQL_6.item_no INNER JOIN
                      dbo.IMITMIDX_SQL ON dbo.BMPRDSTR_SQL.comp_item_no = dbo.IMITMIDX_SQL.item_no INNER JOIN
                      dbo.IMITMIDX_SQL IMITMIDX_SQL_1 ON BMPRDSTR_SQL_1.comp_item_no = IMITMIDX_SQL_1.item_no INNER JOIN
                      dbo.IMITMIDX_SQL IMITMIDX_SQL_2 ON BMPRDSTR_SQL_2.comp_item_no = IMITMIDX_SQL_2.item_no INNER JOIN
                      dbo.IMITMIDX_SQL IMITMIDX_SQL_3 ON BMPRDSTR_SQL_3.comp_item_no = IMITMIDX_SQL_3.item_no INNER JOIN
                      dbo.IMITMIDX_SQL IMITMIDX_SQL_4 ON BMPRDSTR_SQL_4.comp_item_no = IMITMIDX_SQL_4.item_no INNER JOIN
                      dbo.IMITMIDX_SQL IMITMIDX_SQL_5 ON BMPRDSTR_SQL_5.comp_item_no = IMITMIDX_SQL_5.item_no INNER JOIN
                      dbo.IMITMIDX_SQL IMITMIDX_SQL_6 ON BMPRDSTR_SQL_6.comp_item_no = IMITMIDX_SQL_6.item_no INNER JOIN
                      dbo.IMINVLOC_SQL ON IMITMIDX_SQL_6.item_no = dbo.IMINVLOC_SQL.item_no
WHERE     dbo.BMPRDSTR_SQL.item_no = @ITEM_NO
GO
0
 
bruno71Author Commented:
Wow!  Someone else who knows Macola?!?  I don't believe it:-)  

Your Stored Procedure worked beautifully!  Thank you so much...Now I'm just not sure what to do with it.  It seems to list all of the 1st level items, then the 2nd level items, etc...  How do I use this in CR to print like this...

1         10001
  2       30420
    3     20001
    3     10121
    3     10155
    3     20242
  2       10069

Thanks for all your help!

~bruno71
0
 
ast2550Commented:
Group by {Table.1_Seq}
Group by {Table.2_Seq}
Group by {Table.3_Seq}
Group by {Table.4_Seq}
etc...

The suppress them all except the details.

Create a formula for the Level
If {Table.CHILD_PN} = {Table.1_PN} then "*1" else
if {Table.CHILD_PN} = {Table.2_PN} then "**2" else
if {Table.CHILD_PN} = {Table.3_PN} then "***3" else
if {Table.CHILD_PN} = {Table.4_PN} then "****4" else
if {Table.CHILD_PN} = {Table.5_PN} then "*****5" else
if {Table.CHILD_PN} = {Table.6_PN} then "******6" else
if {Table.CHILD_PN} = {Table.7_PN} then "*******7" else
if {Table.CHILD_PN} = {Table.8_PN} then "********8" else
if {Table.CHILD_PN} = {Table.9_PN} then "*********9" else
if {Table.CHILD_PN} = {Table.10_PN} then "**********10"
0
 
bruno71Author Commented:
Ok...I think I understand.  When I create the CR, how do I tell it to pull the data from the Stored Procedure instead of a table?  

~bruno71
0
 
ast2550Commented:
Create a new report
'Add Database to Report'
From the 'Data Explorer', click 'Options'
Ensure that 'Stored Procedures' is checked
Create your connection
When you browse the connection, there should be two top level items (Tables, Stored Procedures)
Select Stored Procedures
Select the one created

In Crystal, you cannot link a table to a stored procedure.  So if you want the 'Other costs' pulled in, you need to modify the procedure.  Also, if you haven't worked with a Union before it is a critical component of this SP.  There are multiple separate queries that are pushed together after they are run.  So, if you add a table you'll need to add it in each unioned query.  Also, I find it useful to test each query separately, so you can see exactly what you are getting and then put them all together when you know each is correct.

Also, you can test each part as a Select query not a Stored Procedure, then you don't have to build it run it.  You just need to pull out the @Item_No and type in a specific parent_PN.  Each query would start with the Select Statement.
0
 
bruno71Author Commented:
When I click 'Add Database to Report', there is no Data Explorer or other Options.  It will only let me select tables.  Is this available in CRv7?

~bruno71
0
 
ast2550Commented:
In CR7

File | Options
'SQL' tab
Check the Stored Procedure box.

When you browse for the table it will be listed as Proc(BOM...;1), not sorted by the SP name (i.e. BOM...).
0
 
bruno71Author Commented:
Alright!  We're getting closer...  When I added the SP, it asked me to input a value for @ITEM_NO or leave it NULL.  How do make it so I can change the value with the Selection Expert?  Or do I change the value somewhere else?

~bruno71
0
 
ast2550Commented:
Um...I don't think you can.  The SP uses the parameter to restrict the data.  So, the database executes each part query that is unioned using the parameter.  Then unions them all together...which is efficient.  If we created it as a view (which operates kind of like a table), the database would execute each query with no parameter (the whole BOM table would be used) and then the queries would be unioned then the Select Expert would be run against the large result.  So, it would churn.

I hope I've explained this correctly and clearly.

You can test the SP as a view.  Go into SQL Enterprise Manager and open the database, instead of going to Tables, open Views.  Right click, create new view.  Paste the SP data, but, you'll need to strip some data out of it.  The @Item_No needs to be removed from each query and the "CREATE PROCEDURE [dbo].[BOM_IM_procedure] @ITEM_NO CHAR(15) AS" would be removed.  The create View stuff will be added when you save it.

If when you execute this it return favorable results then maybe your BOM table is not massive like ours.

And if it is slow, is there any reason why you require Select Expert to choose the values?
0
 
bruno71Author Commented:
I plan on using this report as a subreport in another one I'm working on.  The parent report prints customer & order information, then this subreport would print the BOM and costs for each item in the parent report.  So I would need to be able to execute this report based on the item number from the parent report.  

~bruno71
0
 
ast2550Commented:
That on the other hand should work beutifully.  Since this BOM/Cost report will be contained in the parent report that will pull in the Part numbers to fill in the Sub-Report.

Create your main report.
Insert a sub report based on Stored Procedure
Edit the links between the reports, go to the main report and select the sub-report and right-click.  Select Change Subreport Links.  Then, move your field over at the top.  And un-check the box below on the right.  And, then the field on the bottom right will list ?Pm-Table.item_no, but in there but you'll have to up/down arrow is ?ITEM_NO which is what you want.

This crystal page explains as well, http://support.businessobjects.com/library/kbase/articles/c2002084.asp
0
 
ast2550Commented:
Any more questions?
0
 
bruno71Author Commented:
No...I'm still trying to wrap my brain around the concept of how this is going to work.  But I think you've given me all the information I need.  Anything else would just be diverting from the original question.  Thanks so much for all your help.  I'm so glad that there is someone else out there who has the same Macola problems that I do.  

~bruno71
0

Featured Post

How to Use the Help Bell

Need to boost the visibility of your question for solutions? Use the Experts Exchange Help Bell to confirm priority levels and contact subject-matter experts for question attention.  Check out this how-to article for more information.

  • 9
  • 9
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now