private void pAddConnectAuxToListView(cReportConnect connect) { m_fConnectsAux.addConnect(connect.getDataSource(), connect.getStrConnect()); }
private bool pGetData( ref DataTable vRows, ref DataTable rs, cReportConnect connect, bool createIndexVector, List<object[]> recordsets) { String strConnect = ""; bool saveInReport = false; CSDataBase.cDataBase cn = null; object[] varRs = null; DataTable rsAux = null; DbDataReader dr = null; // if we get an string connection // if (m_launchInfo.getStrConnect().Trim() != "") { strConnect = m_launchInfo.getStrConnect(); } // if m_launchInfo.getStrConnect() is empty we will use // the connection of the connect object // else { strConnect = connect.getStrConnect(); saveInReport = true; } if (!getReportDisconnected()) { if (strConnect.Trim() == "") { cWindow.msgWarning("The connection settings were not defined." + "Both the LaunchInfo and the Connect object have their " + "strConnect property empty. Whitout this connection string " + "it will be imposible to open the connection to the database.", "CSReportEditor"); return false; } cn = new cDataBase(m_databaseEngine); if (m_isForWeb) { cn.setSilent(true); } if (connect.getCommandTimeout() > 0) { cn.setCommandTimeout(connect.getCommandTimeout()); } if (connect.getConnectionTimeout() > 0) { cn.setConnectionTimeout(connect.getConnectionTimeout()); } // open the connection // if (!cn.initDb("", "", "", "", strConnect)) { if (!resumeDBAccessMissing(strConnect, saveInReport, cn)) { return false; } } // we need to prepare the first sentence // String sqlstmt = ""; // if it was a select // if (m_launchInfo.getSqlstmt().Trim() != "") { sqlstmt = m_launchInfo.getSqlstmt(); } else { if (connect.getDataSourceType() == csDataSourceType.CDDTPROCEDURE) { sqlstmt = "exec [" + connect.getDataSource() + "] " + connect.getSqlParameters(); } else if (connect.getDataSourceType() == csDataSourceType.CSDTTABLE) { sqlstmt = "select * from [" + connect.getDataSource() + "]"; } else { sqlstmt = connect.getDataSource(); } } // open the recordset // cn.setOpenRsExDescript(m_descripUser); if (!cn.loadDataTable(true, false, false, sqlstmt, out rs, out dr, "GetData", C_MODULE, "")) { return false; } if (rs.Rows.Count == 0) { vRows = null; if (createIndexVector) { m_vRowsIndex = new int[0]; m_lastRowIndex = -1; } } else { vRows = rs; if (createIndexVector) { m_vRowsIndex = new int[vRows.Rows.Count]; m_lastRowIndex = m_vRowsIndex.Length - 1; int k = 0; for (k = 0; k < m_vRowsIndex.Length; k++) { m_vRowsIndex[k] = k; } } } varRs = new object[2]; varRs[0] = rs; varRs[1] = connect.getDataSource(); recordsets.Add(varRs); // we need to load every recordset from every data source // in the recordset collection (this code suport multiples // recordset in the same reader) // while (!dr.IsClosed && dr.NextResult()) { rsAux = new DataTable(); rsAux.Load(dr); varRs = new object[2]; varRs[0] = rsAux; varRs[1] = connect.getDataSource(); recordsets.Add(varRs); // TODO: check if this works // // we add an empty element to m_collRows to avoid // index of bounds exception // G.redimPreserve(ref m_collRows, m_collRows.Length + 1); } cn.closeDb(); } else { vRows = null; if (createIndexVector) { m_vRowsIndex = new int[0]; m_lastRowIndex = -1; } } if (m_rows != null) { m_recordCount = m_vRowsIndex.Length; } else { m_recordCount = 0; } m_iRow = 0; m_idxGroupHeader = -1; m_idxGroupFooter = -1; return true; }