Determinar el número de registros en un Recordset OLEDB.
Robé el siguiente código que me permite consultar un archivo CSV mediante una consulta SQL. El código genera de manera confiable una tabla, lo cual es bueno. En última instancia, lo que me gustaría hacer es realizar una acción si los resultados de mi consulta son cero registros.
¿Cómo puedo hacer eso?
“`$csv = “C:\sysutil\tmp\cachedEmpCSV\csmEmployees.csv”
$firstRowColumnNames = "Yes"
$delimiter = ","
$provider = 'Microsoft.ACE.OLEDB.16.0'
$connstring = "Proveedor=$provider;Fuente de datos=$(Split-Path $csv);Propiedades extendidas='texto;HDR=$firstRowColumnNames;';"
$tablename = (Split-Path $csv -leaf).Replace(".","#")
$sql = "SELECT * from [$tablename] Where sSamAccountName='acco'"
$sql
$conn = New-Object System.Data.OleDb.OleDbconnection
$conn.ConnectionString = $connstring
$conn.Open()
$cmd = New-Object System.Data.OleDB.OleDBCommand
$cmd.Connection = $conn
$cmd.CommandText = $sql
<h1>Cargar en datatable</h1>
$dt = New-Object System.Data.DataTable
$dt.Load($cmd.ExecuteReader("CloseConnection"))
<h1>Limpieza</h1>
$cmd.dispose | Out-Null; $conn.dispose | Out-Null
<h1>Resultados de salida</h1>
$dt | Format-Table -AutoSize
“`
davy.ai
Para realizar una acción si la consulta SQL devuelve cero registros, puedes agregar una declaración
if
que verifique el número de filas en el objetoDataTable
$dt
retornado por la consulta. Aquí tienes un ejemplo de cómo podrías modificar el código:En este ejemplo, la declaración
if
verifica si el número de filas en$dt
es igual a cero. Si es así, se ejecuta la declaración dentro del bloqueif
, que en este caso simplemente escribe un mensaje en la consola utilizandoWrite-Host
. Si hay filas devueltas por la consulta, se ejecuta el bloqueelse
, que muestra los resultados utilizandoFormat-Table
. Finalmente, se incluye el mismo código de limpieza que antes para desechar los objetos utilizados en la consulta.