Jump to content

Search the Community

Showing results for tags 'db2'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Welcome to PHP Freaks
    • Announcements
    • Introductions
  • PHP Coding
    • PHP Coding Help
    • Regex Help
    • Third Party Scripts
    • FAQ/Code Snippet Repository
  • SQL / Database
    • MySQL Help
    • PostgreSQL
    • Microsoft SQL - MSSQL
    • Other RDBMS and SQL dialects
  • Client Side
    • HTML Help
    • CSS Help
    • Javascript Help
    • Other
  • Applications and Frameworks
    • Applications
    • Frameworks
    • Other Libraries
  • Web Server Administration
    • PHP Installation and Configuration
    • Linux
    • Apache HTTP Server
    • Microsoft IIS
    • Other Web Server Software
  • Other
    • Application Design
    • Other Programming Languages
    • Editor Help (Dreamweaver, Zend, etc)
    • Website Critique
    • Beta Test Your Stuff!
  • Freelance, Contracts, Employment, etc.
    • Services Offered
    • Job Offerings
  • General Discussion
    • PHPFreaks.com Website Feedback
    • Miscellaneous

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests


Age


Donation Link

Found 7 results

  1. I have a successful select query, where I'm looping and building a row for getting parameters which works correctly while ($row = $orderDetailCheck->fetch(PDO::FETCH_ASSOC)) { $params = [ ":INVOICE_NUMBER" => $row["INVOICE_NUMBER"], ":CUSTNM" => $row["CUSTNM"], ":SELLINGN" => $row["SELLINGN"], ":GROUP" => $row["GROUP"], ":DTL12" => $row["DTL12"], ":DTL13" => $row["DTL13"], ":QUANTITY" => $row["QUANTITY"], ":COUNT_PLMN_1" => $row["COUNT_PLMN_1"], ":LAST_DATE" => $row["LAST_DATE"], ]; } My issue now is that, for each row, I need to perform two merges because the data from that select is going to be split into two tables in db2. Some values are truly split between the tables but some values are shared between the two. I'm not sure the best way to perform these two merges because if the first one (products table) inserts, then it creates an ID that I need as a foreign key basically, to insert into the orders table. So on insert I need to grab that newly created ID and use it for ```product_id``` in the second merge. If the first merge performs the update when matched, then I need to grab the existing ID for that record so that I can update the proper record in the orders table. My two merge statements: /*products table*/ MERGE INTO products AS P USING(VALUES( :GROUP, :DTL12, :DTL13, :CUSTNM, :SELLINGN, :COUNT_PLMN_1, :LAST_DATE ) ) AS S(GROUP,DTL12,DTL13,CUSTNM,SELLINGN,COUNT_PLMN_1,LAST_DATE) ON s.GROUP = p.GROUP and s.DTL12 = p.DTL12 and s.DTL13 = p.DTL13 and s.CUSTNM = p.CUSTNM WHEN MATCHED THEN UPDATE SET LAST_DATE = s.LAST_DATE WHEN NOT MATCHED THEN INSERT VALUES (s.GROUP,s.DTL12,s.DTL13,s.CUSTNM,s.SELLINGN,s.COUNT_PLMN_1,s.LAST_DATE) /*ORDERS Table*/ MERGE INTO ORDERS AS PO USING(VALUES( /*need foreign key, which is id from products table*/ :QUANTITY, :LAST_DATE, :INVOICE_NUMBER )) AS S(PRODUCT_ID,quantity_ordered,LAST_DATE,invoice_number) ON s.PRODUCT_ID = po.id WHEN MATCHED THEN UPDATE SET LAST_DATE = s.LAST_DATE, quantity_ordered = s.quantity_ordered, invoice_number = s.invoice_number WHEN NOT MATCHED THEN INSERT VALUES (s.PRODUCT_ID, s.quantity_ordered, s.LAST_DATE, s.invoice_number) Examples: If my ROW Returns INVOICE | CUSTNM | SELLINGNUM | GROUP | DTL12 | DTL13 | QUANTITY | COUNT_PLMN_1 | LAST_DATE ================================================================================================================== 1122 123 321 995 1452 12 13 5 '2018-12-14' Then my insert into products would be products ID | GROUP | DTL12 | DTL13 | CUSTNM | SELLINGNUM | COUNT_PLMN_1 | LAST_DATE ========================================================================================================== 1 995 1452 12 123 321 5 '2018-12-14' and my insert to orders: ORDERS PRODUCT_ID | QUANTITY_ORDERED | LAST_DATE | INVOICE ============================================================ 1 13 '2018-12-14' 1122 But if my next record matched on my unique qualities with a new invoice, quantity and date ROW Returns INVOICE | CUSTNM | SELLINGNUM | GROUP | DTL12 | DTL13 | QUANTITY | COUNT_PLMN_1 | LAST_DATE ================================================================================================================== 1133 123 321 995 1452 12 4 5 '2018-12-18' Then I would update products like so: products ID | GROUP | DTL12 | DTL13 | CUSTNM | SELLINGNUM | COUNT_PLMN_1 | LAST_DATE ========================================================================================================== 1 995 1452 12 123 321 5 '2018-12-18' and update orders like so: ORDERS PRODUCT_ID | QUANTITY_ORDERED | LAST_DATE | INVOICE ============================================================ 1 4 '2018-12-18' 1133 I guess the main question is: How can I get the ID of a record from the products table (whether it's an existing match OR newly created in the merge) and once I get it, how can I use it for the 2nd merge?
  2. I'm creating an array out of a select statement but it's currently printing an empty array. I've tested the query manually and know for a fact that it should contain information but I could be missing something in translating the data from the odbc connection over to the mysql connection. I'm putting the entire code block below, the print_r statement at the end is the array being printed that's empty. Everything else in the code is working perfectly, but my ```$dealerSkuCheck``` query should be pulling orders from mysql by equating those fields to the previously retrieved Db2 values, in the ```$Db2ShipArr``` which prints all of the necessary information. Maybe I'm just missing a call to those variables somewhere? $DB2Shipped = " SELECT DISTINCT invnoc as INVOICE, cstnoc AS DEALER, framec AS FRAME, covr1c AS COVER, colr1c AS COLOR , extd2d AS SHIPDATE, orqtyc AS QUANTITY FROM GPORPCFL WHERE invnoc = '{$order_id}' group by invnoc,cstnoc, slsnoc, orqtyc, framec, covr1c,colr1c, extd2d order by invnoc asc "; //print_r($order_id); $Db2ShipRslt = odbc_exec($DB2Conn,$DB2Shipped); if ( $Db2ShipRslt === false ) { exit (odbc_errormsg($DB2Conn)); } $Db2ShipArr = array(); //print_r($order_id); while($db2ShipRow = odbc_fetch_array($Db2ShipRslt)){ //print_r($Db2ShipArr); { $Db2ShipArr[] = $db2ShipRow; } foreach($Db2ShipArr as $Db2Ship){ try{ while($arr = odbc_fetch_array($Db2ShipRslt)) { //Check to see if there are any records in jfi_sales.placements for the dealer/sku combo $dealerSkuCheck = " SELECT sku_id, dealer_id FROM placements p INNER JOIN skus s ON p.sku_id = s.id WHERE p.dealer_id = '{$db2ShipRow['DEALER']}' AND s.frame = '{$db2ShipRow['FRAME']}' AND s.cover1 = '{$db2ShipRow['COVER']}' AND s.color1 = '{$db2ShipRow['COLOR']}' AND p.order_num = '{$db2ShipRow['INVOICE']}' "; $existingCheckRslt = mysqli_query($mysqlConn, $dealerSkuCheck); $existingRecords = array(); while ($existingRow = mysqli_fetch_array($existingCheckRslt)){ $existingRecords[] = $existingRow; } print_r($existingRecords); /*This is printing an empty array*/
  3. My code is creating an array and I have it printing to ensure that it has the right values, which it does. The problem is it seems to be creating too many arrays or array subsets in the loop. Each array should be for one invoice and look like this: [0] => Array ( [iNVOICE] => 12605987 [DEALER] => 12314 [FRAME] => 43845 [COVER] => 1228 => 49 [sHIPDATE] => 20170517 [QUANTITY] => 2 ) This is how it's currently printing for each invoice, and it's pulling all the right invoices and data, just too many: Array ( [0] => Array ( [iNVOICE] => 12605987 [DEALER] => 12314 [FRAME] => 43845 [COVER] => 1228 => 49 [sHIPDATE] => 20170517 [QUANTITY] => 2 ) ) Array ( [0] => Array ( [iNVOICE] => 12605987 [DEALER] => 12314 [FRAME] => 43845 [COVER] => 1228 => 49 [sHIPDATE] => 20170517 [QUANTITY] => 2 ) [1] => Array ( [iNVOICE] => 12605987 [DEALER] => 12314 [FRAME] => 40404 [COVER] => 1223 => 29 [sHIPDATE] => 20170602 [QUANTITY] => 1 ) ) Array ( [0] => Array ( [iNVOICE] => 12605987 [DEALER] => 12314 [FRAME] => 43845 [COVER] => 1228 => 49 [sHIPDATE] => 20170517 [QUANTITY] => 2 ) [1] => Array ( [iNVOICE] => 12605987 [DEALER] => 12314 [FRAME] => 40404 [COVER] => 1223 => 29 [sHIPDATE] => 20170602 [QUANTITY] => 1 ) [2] => Array ( [iNVOICE] => 12605987 [DEALER] => 12314 [FRAME] => 546892 [COVER] => 2220 => 29 [sHIPDATE] => 20170602 [QUANTITY] => 1 ) ) I'm including the parts of the script containing all values and arrays that this section utilizes to help with clearing it up, as well as where I'm seeing the issue, notated in the code by /**/ $orderShippedCheck = " SELECT order_id, order_status FROM order_status WHERE order_status = 'S' "; $result = mysqli_query($mysqlConn, $orderShippedCheck); $order_ids = array(); //loop results to gather order IDs and store them while ($row = mysqli_fetch_array($result)){ $order_ids[] = $row['order_id']; } foreach($order_ids as $order_id){ //SELECT FROM DB2 WITH THE ORDER NUMBERS FIRST $DB2Shipped = " SELECT invnoc as INVOICE, cstnoc AS DEALER, framec AS FRAME, covr1c AS COVER, colr1c AS COLOR , extd2d AS SHIPDATE, orqtyc AS QUANTITY FROM GPORPCFL WHERE invnoc = '{$order_id}' group by invnoc,cstnoc, slsnoc, orqtyc, framec, covr1c,colr1c, extd2d order by invnoc asc "; print_r($order_id); //Prints correct order ID before each array for that order ID $Db2ShipRslt = odbc_exec($DB2Conn,$DB2Shipped); if ( $Db2ShipRslt === false ) { exit (odbc_errormsg($DB2Conn)); } $Db2ShipArr = array(); print_r($order_id); while($db2ShipRow = odbc_fetch_array($Db2ShipRslt)){ { $Db2ShipArr[] = $db2ShipRow; } foreach($Db2ShipArr as $Db2Ship){ } print_r($Db2ShipArr); /*This is where the array is printing in that format*/ }
  4. I'm trying to alter a db2 query in my php script and it's not executing properly when doing so. In the last line of my WHERE clause for the DB2 select, I'm using this: AND date(substr(extd2d,1,4)||'-'||substr(EXTD2d,5,2)||'-'||substr(EXTD2d,7,2)) >= {$row['start_date']} but getting an error that >= is not a valid comparison operand. However, if I remove {$row['start_date']} and use current_date or current_date - 100 DAY, it works perfectly. To clarify, the value for 'start_date' in mysql is DATE data type and the value 'extd2d' in db2 is a packed field value that holds a date (20180202), so I'm converting it to try and match the YYYY-MM-DD format. Why can't I get this to work as it is? $sql = " SELECT sku_id, dealer_id, locations, s.sku_group_id as groupID, s.frame as frame, s.cover1 as cover, s.color1 as color, start_date - interval 7 day as start_date from placements p inner join skus s on p.sku_id = s.id where curdate() between p.start_date and p.expire_date group by sku_id, dealer_id limit 100"; $result = mysqli_query($conn,$sql); while($row = mysqli_fetch_assoc($result)) { $resultData[] = $row; $sql2 = " SELECT framec, covr1c, colr1c, date(substr(extd2d,1,4)||'-'||substr(EXTD2d,5,2)||'-'||substr(EXTD2d,7,2)) as start_date, sum(orqtyc) as TotalQTY from table1 where cstnoc = {$row['dealer_id']} AND framec = {$row['frame']} AND colr1c = {$row['color']} AND covr1c = {$row['cover']} AND date(substr(extd2d,1,4)||'-'||substr(EXTD2d,5,2)||'-'||substr(EXTD2d,7,2)) >= {$row['start_date']} /*This is the line in question*/ group by framec,covr1c,colr1c,extd2d "; $result2 = odbc_exec($DB2Conn, $sql2); while($row2 = odbc_fetch_array($result2)){ $db2Result[] = $row2; } } print_r($resultData); print_r($db2Result);
  5. I have two functions, one loading data and the other loading the data into an html table. I've done this for 3 other data sets without issue but this one is not loading into the table for some reason. The html table loads but it's empty. I have error printing on but there are no errors. Also the query returns the correct results when I manually run it so I know it's getting results, plus it's printing the result resource ID. So my result prints, and my html table shows up, but the results are not in the table so I'm assuming maybe I'm not passing it to the table properly? Any guidance here is greatly appreciated //Function to gather data private function loadActivity($cust) { $this->dbConnect(); //loading set data values from top of function file $fromC = $this->cy_from; $fromP = $this->py_from; $thruC = $this->cy_thru; $thruP = $this->py_thru; $endYr = $this->py_endYr; $query = " select count(*), 'PRIOR' as Range from actvty where cust = {$cust} AND date between '{$fromP}' and '{$thruP}' union all select count(*), 'CURRENT' as Range from actvty where cust = {$cust} AND date between '{$fromC}' and '{$thruC}' union ALL select count(*), 'FULL' as Range from actvty where cust = {$cust} AND date between '{$fromP}' and '{$endYr}'"; $result = odbc_exec($this->ocon,$query); print_r($result); //This prints "Resource ID #76" $this->activitySum = array(); if ($result) { while ($row = odbc_fetch_array($result)) { $this->activitySum[$row['Range']]; $this->isloaded = true; } }else{ echo"query failed" . odbc_error(); } } public function getCallActivityHTMLcust($cust, $header='Activity'){ $this->loadActivity($cust); $h2 = "<table class='customer-table'>"; $h2 .= "<thead><tr><th colspan='2' style='font-weight: bold'></th>" . htmlspecialchars($header) . "</tr></thead>"; $h2 .= "<tbody>"; $h2 .= "<tr><td>{$this->pyyy} YTD</td><td style='text-align: right;'>" . $this->activitySum['PRIOR'] . "</td></tr>"; $h2 .= "<tr><td>{$this->yyyy} YTD</td><td style='text-align: right;'>" . $this->activitySum['CURRENT'] . "</td></tr>"; $h2 .= "<tr><td>{$this->pyyy} Full Year</td><td style='text-align: right;'>" . $this->activitySum['FULL'] . "</td></tr>"; $h2 .= "</tbody></table>"; return $h2; }
  6. I have a script that 'works' but I had an oversight in logic and I'm trying to rectify it. Basically, the below script selects orders from a db2 database, and every item on each order. What I'm doing is adding date intervals to the products for a time period that we believe that product to be on shelves. A customer should only have a number of records for any individual prodcut that's equal to number of stores they have, within the expiration window. An example: If I'm customer 123 and I have 5 stores. Today I placed an order for skus 1,2, and 3 and I bought 2 of each. That's 2 records per product. Tomorrow I order 6 more of each product; that should add 3 records per product, and then overwrite the oldest records for those products 3 times and update the expiration date to one additional day. So within 2 days I placed multiple orders for the same 3 products, but the piece count was more than my number of stores so that's where the update comes in. At the end of the day, for any individual sku within an expiration window I should never have more records for each sku than number of locations. Anyway, this works in terms of inserting, and it works for updates IF the record already exists when I do the select. But my problem is this: If the select has an order from yesterday and today, both of which containing items that should be updated, it's only going to select them all and insert because at the time of selecting, they didn't exist. My solution to this in my mind is to break this up and process the script in a batch by order number, so that way I'm only inserting records for one order number, then going back and selecting the next order and doing it again. This way, every order number has the opportunity to be selected so that I can accurately determine if it needs to be updated or inserted. I feel like this should be fairly simple but I just don't know the best way to go about it. Basically, I would select my order numbers, check my destination table for the items, then insert/update, then do it all again for the next order number, rather than selecting an array of order numbers and just working from that which could result in too many records being inserted rather than updated. I can clarify if needed, but any help is much appreciated. <?php //Select orders from DB2 side $detailStatCheck = " SELECT inv as INVOICE, stat as STATUS, cust AS CUSTOMER, frm AS BODY, cov AS MTRL, col AS ATTR , shpdte AS SHIPPED, qty AS QUANTITY, p.stores as STORES FROM goods g inner join plant p on g.cust = p.cstno WHERE to_date(char(shpdte), 'YYYYMMDD') >= '2018-01-01' "; //prepare and execute to select orders try { $detailCheck = $DB2conn->prepare($detailStatCheck); $detailRslt = $detailCheck->execute(); $count2 = $detailCheck->fetch(); print_r($count2); } catch(PDOException $ex) { echo "QUERY FAILED!: " .$ex->getMessage(); } //Create prepared INSERT statement $insertPlacement = " INSERT ignore INTO placedOrders (sku, category, CUSTOMER_id, start_date, expire_date, locations, order_num) SELECT id, category, :CUSTOMER, DATE_ADD(:SHIPPED),INTERVAL 7 DAY) as start_date, DATE_ADD(DATE_FORMAT(CONVERT(:SHIPPED, CHAR(20)), '%Y-%m-%d'),INTERVAL 127 DAY) as expire_date, :STORES, :INVOICE FROM sku s WHERE s.BODY=:BODY AND s.MTRL1=:MTRL AND s.ATTR1=:ATTR "; //check for existing records that are expired, which would trigger insert $expiredCheck = " SELECT sku, CUSTOMER_id, expire_date FROM placedOrders p INNER JOIN sku s ON p.sku = s.id WHERE p.CUSTOMER_id = :CUSTOMER AND s.BODY = :BODY AND s.MTRL1 = :MTRL AND s.ATTR1 = :ATTR AND p.expire_date <= current_date() "; //check for existing records that are not expired, triggering update $validCheck = " SELECT sku, CUSTOMER_id, expire_date FROM placedOrders p INNER JOIN sku s ON p.sku = s.id WHERE p.CUSTOMER_id = :CUSTOMER AND s.BODY = :BODY AND s.MTRL1 = :MTRL AND s.ATTR1 = :ATTR AND p.expire_date > current_date() "; //prepare all update and insert queries $checkExisting = $MysqlConn->prepare($expiredCheck); $checkExistingValid = $MysqlConn->prepare($validCheck); $insert = $MysqlConn->prepare($insertPlacement); $update = $MysqlConn->prepare($updatePlacement); //while we have results from the order selection while ($row2 = $detailCheck->fetch(PDO::FETCH_ASSOC)) { $executionValues = [ ":CUSTOMER" => $row2["CUSTOMER"], ":SHIPPED" => $row2["SHIPPED"], ":STORES" => $row2["STORES"], ":QUANTITY" => $row2["QUANTITY"], ":INVOICE" => $row2["INVOICE"], ":BODY" => $row2["BODY"], ":MTRL" => $row2["MTRL"], ":ATTR" => $row2["ATTR"], ]; $checkValues = [ ":CUSTOMER" => $row2["CUSTOMER"], ":BODY" => $row2["BODY"], ":MTRL" => $row2["MTRL"], ":ATTR" => $row2["ATTR"], ]; try{ //Array will contain records that are expired $existingRslt = $checkExisting->execute($checkValues); $count3 = $checkExisting->fetch(PDO::FETCH_ASSOC); //Array will contain records that are valid $existingVldRslt = $checkExistingValid->execute($checkValues); $count4 = $checkExistingValid->fetch(PDO::FETCH_ASSOC); }catch(PDOException $ex){ echo "QUERY FAILED!!!: " . $ex->getMessage(); } // IF records do not exist, or records exist and today is after expiration date if(empty($count3) && empty($count4)){ print_r("Inserting"); for($i=0; $i<$row2["STORES"]; $i++) { try{ $insertRslt = $insert->execute($executionValues); }catch(PDOException $ex){ echo "QUERY FAILED!!!: " . $ex->getMessage(); } } //IF records do exist but are expired, insert new }elseif(!empty($count3)){ print_r("Inserting"); for($i=0; $i<$row2['STORES']; $i++){ try{ $insertRslt = $insert->execute($executionValues); }catch(PDOException $ex){ echo "QUERY FAILED!!!: " . $ex->getMessage(); } } //IF records exist and are not expired }elseif(!empty($count4)){ print_r("updating"); for($i=0; $i<$row2['STORES']; $i++){ try{ $updateRslt = $update->execute($executionValues); }catch(PDOException $ex){ echo "QUERY FAILED!!!: " . $ex->getMessage(); } } } } ?>
  7. I have a query where I'm selecting records from DB2 database and storing the values in an array: $orderIdsStr = "'" . implode("', '", $order_ids) . "'"; //SELECT FROM DB2 WITH THE ORDER NUMBERS FIRST $query = "SELECT invnoc as INVOICE, cstnoc AS DEALER, framec AS FRAME, covr1c AS COVER, colr1c AS COLOR , extd2d AS SHIPDATE, orqtyc AS QUANTITY FROM GPORPCFL WHERE invnoc IN ({$orderIdsStr}) GROUP BY invnoc,cstnoc, slsnoc, orqtyc, framec, covr1c,colr1c, extd2d ORDER BY invnoc asc LIMIT 35"; $Db2ShipRslt = odbc_exec($DB2Conn, $query); if ( $Db2ShipRslt === false ) { exit (odbc_errormsg($DB2Conn)); } //Process the results $Db2ShipArr = array(); while($db2ShipRow = odbc_fetch_array($Db2ShipRslt)){ { //Output the record print_r($db2ShipRow); /*This prints the correct Rows*/ //Append record to results array $Db2ShipArr[] = $db2ShipRow; } And this works, pulling correct records and storing them properly. I also have an insert that works properly (it inserts the exact number of records and appropriate values). BUt I'm wondering how I can apply a certain condition to the insert and I've never had to do this. My select grabs a value called ```orqtyc``` as alias ```QUANTITY``` and I insert those values to my mysql ```placements_new``` table in a column called ```locations```. This is appropriate but I'd also like to be able to have it insert each record a number of times equal to that value. Basically ```if row is < :QUANTITY , keep inserting until the record is inserted n times, n being :QUANTITY value```. So if ```:QUANTITY``` = 3, that same record should be inserted 3 times. Technically there would be duplicates but this way each row has it's own set of dates. Again, the select/insert both work and the arrays return what I need. All I need some help with is how to make the insert write the number of rows = to the quantity value. Here's the other part where the insert takes place: foreach($Db2ShipArr as $Db2Ship){ /*THIS IS THE PROBLEM AREA*/ if($rows < :QUANTITY, INSERT n = :QUANTITY){ //INSERT # of records equal to QUANTITY $stmt = $PDO->prepare(" INSERT IGNORE INTO placements_new (sku_id, group_id, dealer_id, start_date, expire_date, locations, order_num) SELECT id, sku_group_id, :DEALER, DATE_ADD(DATE_FORMAT(CONVERT(:SHIPDATE, CHAR(20)), '%Y-%m-%d'),INTERVAL 7 DAY) as start_date, DATE_ADD(DATE_FORMAT(CONVERT(:SHIPDATE, CHAR(20)), '%Y-%m-%d'),INTERVAL 127 DAY) as expire_date, :QUANTITY, :INVOICE FROM skus s WHERE s.frame=:FRAME AND s.cover1=:COVER AND s.color1=:COLOR "); $PDO->beginTransaction(); $i = 0; while($db2row = odbc_fetch_array($Db2ShipRslt)) { if(++$i % 1000 == 0) { $PDO->commit(); $PDO->beginTransaction(); } $stmt->execute($db2row); } $PDO->commit(); } } } } Here's the fiddle I made. so in this fiddle the record I've inserted for GPORPCFL would, through the php logic/looop, be inserted into placements_new 3 times, since 3 is the value of ```orqtyc```: http://sqlfiddle.com/#!9/26b921
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.