es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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
“`

Tags:  , ,

Answer

  1. Avatar for 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 objeto DataTable $dt retornado por la consulta. Aquí tienes un ejemplo de cómo podrías modificar el código:

    # ...código existente aquí...
    $dt = New-Object System.Data.DataTable
    $dt.Load($cmd.ExecuteReader("CloseConnection"))
    # Verificar si la consulta devolvió filas
    if ($dt.Rows.Count -eq 0) {
        # Hacer algo si no se devolvieron filas
        Write-Host "La consulta no devolvió filas."
    } else {
        # Mostrar los resultados si se devolvieron filas
        $dt | Format-Table -AutoSize
    }
    # Limpiar
    $cmd.Dispose() | Out-Null
    $conn.Dispose() | Out-Null
    

    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 bloque if, que en este caso simplemente escribe un mensaje en la consola utilizando Write-Host. Si hay filas devueltas por la consulta, se ejecuta el bloque else, que muestra los resultados utilizando Format-Table. Finalmente, se incluye el mismo código de limpieza que antes para desechar los objetos utilizados en la consulta.

Comments are closed.