Despues de mucho investigar encontre la solucion. La dejo por si alguien lo necesita. Es para Sql server 2008 en adelante
Primero hay que ejecutar en sql
sp_configure 'show advanced options', 1
reconfigure
go
exec sp_configure 'Ad Hoc Distributed Queries',1
go
reconfigure
go
Esto es para habilitar la opcion Ad Hoc la cual permite la comunicacion con entornos externos de sql
Luego escribir para crear el procedimiento almacenado
Código SQL
[-]CREATE PROCEDURE [dbo].[VOLCAR]
@ARCHIVO NCHAR(30), -- NOMBRE DEL .DBF A ACCEDER
@PATH NCHAR(20), -- DIRECTORIO DONDE SE ENCUENTRA POR EJEMPLO 'C:\PEDIDOS\'
@PEDIDO NCHAR(50) -- TABLA DONDE DESCARGAR EL CONTENIDO DE @ARCHIVO
AS
BEGIN
DECLARE @sql char(400)
DECLARE @Driver sysname
DECLARE @Cadena sysname
DECLARE @Sentencia CHAR(100)
SET NOCOUNT ON;
EXECUTE ('CREATE TABLE '+ @PEDIDO + '(CANTIDAD NUMERIC(8,2),ARTICULO NCHAR(60), MARCA NCHAR(15), CODIGONUM NCHAR(5))')
SET @Driver= '''' + 'Microsoft.Jet.OLEDB.4.0' + ''''
SET @Cadena= '''' + 'dBase IV; HDR=NO;IMEX=2; DATABASE=' + @PATH + ''''
SET @Sentencia= '''' + 'SELECT CANTIDAD,ARTICULO,MARCA,CODIGONUM FROM ' + @ARCHIVO + ''''
SET @sql='INSERT INTO ' + @PEDIDO + ' select * FROM OPENROWSET(' + @Driver + ', ' + @Cadena + ', ' + @Sentencia + ')'
execute (@sql)
y el llamado del procedimeinto desde Delphi es :
Código Delphi
[-] PROCEDIMIENTO.ProcedureName:='VOLCAR';
PROCEDIMIENTO.Parameters.Refresh;
PROCEDIMIENTO.Parameters.ParamByName('@PATH').Value:= 'c:\pedidos\'; PROCEDIMIENTO.Parameters.ParamByName('@ARCHIVO').Value:= ARCHIVO_DBF; PROCEDIMIENTO.Parameters.ParamByName('@PEDIDO').Value:= MIBASENUEVA ; PROCEDIMIENTO.ExecProc;
Espero que le sea util a alguien.
Saludos