Foros del Web » Programando para Internet » PHP »

Problemas en insert ms-sql y php

Estas en el tema de Problemas en insert ms-sql y php en el foro de PHP en Foros del Web. Buenas Tardes: les comento mi problema, tengo dos Tablas en Sql Server y debo Insertar los Registros de una de las Tablas (Origen) con 89 ...
  #1 (permalink)  
Antiguo 14/09/2011, 16:15
 
Fecha de Ingreso: marzo-2010
Mensajes: 22
Antigüedad: 14 años, 1 mes
Puntos: 0
Pregunta Problemas en insert ms-sql y php

Buenas Tardes: les comento mi problema, tengo dos Tablas en Sql Server y debo Insertar los Registros de una de las Tablas (Origen) con 89 registros a la otra (Destino), muy sencillo no....???

Bueno, el tema es que realizo el INSERT desde una pagina de php y al hacerlo no me informa ningún error, pero al consultar la Tabla Destino veo que el INSERT me ha triplicado los registros insertados o sea que en la Tabla Destino me quedan 267 registros.

Hay algo que debo agregar para poder controlar este problema..???

Si ejecuto el INSERT desde el Analizador de Consultas de SQL Server, el INSERT se ejecuta perfecto y me ingresa los registros correctos.

Muchas Gracias.-
  #2 (permalink)  
Antiguo 14/09/2011, 16:16
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Problemas en insert ms-sql y php

Y la consulta?
  #3 (permalink)  
Antiguo 14/09/2011, 16:30
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Problemas en insert ms-sql y php

Por favor coloca el código completo que no somos adivinos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #4 (permalink)  
Antiguo 14/09/2011, 16:36
 
Fecha de Ingreso: marzo-2010
Mensajes: 22
Antigüedad: 14 años, 1 mes
Puntos: 0
Pregunta Respuesta: Problemas en insert ms-sql y php

Ok. Disculpas..!!

$consulta = "";
$consulta = $consulta . "INSERT INTO Clientes ( TipoDoc, NroDocumento, Apellido, Nombre, Caja, Orden, ";
$consulta = $consulta . "Observacion, CodOficina, FechaProceso_Cliente ) SELECT T_Clientes.TipoDoc, ";
$consulta = $consulta . "T_Clientes.NroDocumento, T_Clientes.ApeyNom, T_Clientes.Nombre, T_Clientes.Caja, ";
$consulta = $consulta . "T_Clientes.Orden, T_Clientes.Observacion, T_Clientes.CodOficina, T_Clientes.FechaProceso_Cliente ";
$consulta = $consulta . "FROM T_Clientes";
$result = odbc_exec($connect, $consulta);
echo $consulta;

Muchas Gracias.
  #5 (permalink)  
Antiguo 14/09/2011, 16:40
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Problemas en insert ms-sql y php

El problema debe ser que no tiene ningun WHERE, entonces inserta todo lo que encuentra.
  #6 (permalink)  
Antiguo 14/09/2011, 16:46
 
Fecha de Ingreso: marzo-2010
Mensajes: 22
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Problemas en insert ms-sql y php

Así es, la Tabla T_Clientes es una tabla intermedia y la utilizo para pasar todo lo que tiene a la Tabla Clientes. Pero lo que está sucediendo es que me TRIPLICA los registros..!!! Es decir si la T_Clientes tiene 89 registros, en la Cliente se me agregan 267 registros...!!!

Me explico..??

Muchas Gracias.-
  #7 (permalink)  
Antiguo 14/09/2011, 16:56
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Problemas en insert ms-sql y php

Entonces se debe estar ejecutando 3 veces. Probá comentar el exec y pega la sql que imprimís directamente en el servidor sql.
  #8 (permalink)  
Antiguo 14/09/2011, 17:00
 
Fecha de Ingreso: marzo-2010
Mensajes: 22
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Problemas en insert ms-sql y php

Si. walterdevel Ya lo hice..!!! Y funciona perfecto, me ingresa los 89 registros. El tema es que en la pagina PHP me lo triplica. Es algo muy raro que no puedo solucionar.

Muchas gracias.-
  #9 (permalink)  
Antiguo 14/09/2011, 17:04
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Problemas en insert ms-sql y php

Vas a tener que poner más código para ver el problema, espero que no sea de la nasa o algo así
  #10 (permalink)  
Antiguo 14/09/2011, 21:56
 
Fecha de Ingreso: marzo-2010
Mensajes: 22
Antigüedad: 14 años, 1 mes
Puntos: 0
Pregunta Respuesta: Problemas en insert ms-sql y php

Ahi va.

$archivo = $_POST["archivo"] ;
$path = "C:";
$fichero = $path . "\P81.CLASIF";
$consulta = "";
$consulta = $consulta . "DELETE FROM T_Prestamos_SFB";
$result = odbc_exec($connect, $consulta ) or die ("El Borrado de T_Prestamos_SFB ha fallado");

$consulta = "";
$consulta = $consulta . "DELETE FROM T_Prestamos_SFB_1";
$result = odbc_exec($connect, $consulta ) or die ("El Borrado de T_Prestamos_SFB ha fallado");

$consulta = "";
$consulta = $consulta . "DELETE FROM T_Clientes";
$result = odbc_exec($connect, $consulta );

$consulta = "";
$consulta = $consulta . "DELETE FROM T_Productos";
$result = odbc_exec($connect, $consulta );

$consulta = "";
$consulta = $consulta . "DELETE FROM T_RelCteProd";
$result = odbc_exec($connect, $consulta );

$contenido = file ( $fichero );
for( $i = 0; $i < sizeof( $contenido ); $i++)
{
$linea = trim( $contenido[ $i ] );
$pr_moneda = substr($linea, 0, 2);
$pr_sucursal = substr($linea, 2, 3);
$pr_producto = substr($linea, 5, 3);
$pr_cuenta = substr($linea, 8, 6);
$pr_pnu_renov = substr($linea, 14, 1);
$pr_sco_ident = substr($linea, 15, 13);
$pr_apellido_nombre = substr($linea, 28, 15);
$pr_tipo_docum = substr($linea, 43, 2);
$pr_nro_documento = substr($linea, 45, 12);
$pr_filler = substr($linea, 57, 248);

$consulta = "";
$consulta = $consulta . "INSERT INTO T_Prestamos_SFB (PR_Moneda, PR_Sucursal, PR_Producto, ";
$consulta = $consulta . "PR_Cuenta, PR_PNU_Renov, PR_Sco_Ident, ";
$consulta = $consulta . "PR_ApellidoNombre, PR_Tipo_Documento, PR_Nro_Documento, PR_Filler) ";
$consulta = $consulta . "VALUES ('$pr_moneda', '$pr_sucursal', '$pr_producto', ";
$consulta = $consulta . "'$pr_cuenta', '$pr_pnu_renov', '$pr_sco_ident', '$pr_apellido_nombre', ";
$consulta = $consulta . "'$pr_tipo_docum', '$pr_nro_documento', '$pr_filler')";
$result = odbc_exec($connect, $consulta );
}
// Controla si hay error
if (odbc_error())
{
echo odbc_errormsg($connect) ."<br>\n";
}

$consulta = "";
$consulta = $consulta . "DELETE from T_Prestamos_SFB WHERE ((T_Prestamos_SFB.PR_Moneda)='MO');";
$result = odbc_exec($connect, $consulta );

$consulta = "";
$consulta = $consulta . "INSERT INTO T_Prestamos_SFB_1 ( PR_Moneda, PR_Sucursal, PR_Producto, ";
$consulta = $consulta . "PR_Cuenta, PR_PNU_Renov, PR_Sco_Ident, PR_ApellidoNombre, PR_Tipo_Documento, ";
$consulta = $consulta . "PR_Nro_Documento, PR_Filler, Documentacion ) ";
$consulta = $consulta . "SELECT Cast([PR_Moneda] as int) AS Moneda, ";
$consulta = $consulta . "Cast([PR_Sucursal] as int) AS Sucursal, ";
$consulta = $consulta . "Cast([PR_Producto] as int) AS Producto, ";
$consulta = $consulta . "Cast([PR_Cuenta] as int) AS Cuenta, T_Prestamos_SFB.PR_PNU_Renov, ";
$consulta = $consulta . "T_Prestamos_SFB.PR_Sco_Ident, T_Prestamos_SFB.PR_ApellidoNombre, ";
$consulta = $consulta . "Cast([PR_Tipo_Documento] as int) AS TipoDocumento, ";
$consulta = $consulta . "Cast([PR_Nro_Documento] as bigint) AS NroDocumento, ";
$consulta = $consulta . "T_Prestamos_SFB.PR_Filler, T_Prestamos_SFB.Documentacion ";
$consulta = $consulta . "FROM T_Prestamos_SFB;";
$result = odbc_exec($connect, $consulta );

$consulta = "";
$consulta = $consulta . "UPDATE T_Prestamos_SFB_1 ";
$consulta = $consulta . "SET T_Prestamos_SFB_1.Documentacion = [T_Prod_Prestamos].[Documentacion] ";
$consulta = $consulta . "FROM T_Prestamos_SFB_1 INNER JOIN T_Prod_Prestamos ";
$consulta = $consulta . "ON ((T_Prestamos_SFB_1.PR_Producto = T_Prod_Prestamos.Producto) AND ";
$consulta = $consulta . "(T_Prestamos_SFB_1.PR_Moneda = T_Prod_Prestamos.Moneda)) ";
$consulta = $consulta . "WHERE (((T_Prod_Prestamos.Documentacion)=0))";
$result = odbc_exec($connect, $consulta );

$consulta = "";
$consulta = $consulta . "DELETE FROM T_Prestamos_SFB_1 ";
$consulta = $consulta . "WHERE ((T_Prestamos_SFB_1.Documentacion)=0)";
$result = odbc_exec($connect, $consulta );


$consulta = "";
$consulta = $consulta . "INSERT INTO T_Clientes (TipoDoc, NroDocumento, ApeyNom, Caja, Orden, ";
$consulta = $consulta . "Observacion, CodOficina, FechaProceso_Cliente ) SELECT T_Prestamos_SFB_1.PR_Tipo_Documento, ";
$consulta = $consulta . "T_Prestamos_SFB_1.PR_Nro_Documento, T_Prestamos_SFB_1.PR_ApellidoNombre, ";
$consulta = $consulta . "99999 AS C, 99999 AS O, 'Cliente ingresado por Interfase' AS Obs, ";
$consulta = $consulta . "12 AS CO, " . "" . "GETDATE() AS FA" . " ";
$consulta = $consulta . "FROM T_Prestamos_SFB_1 ";
$consulta = $consulta . "GROUP BY T_Prestamos_SFB_1.PR_Tipo_Documento, T_Prestamos_SFB_1.PR_Nro_Documento, ";
$consulta = $consulta . "T_Prestamos_SFB_1.PR_ApellidoNombre;";
$result = odbc_exec($connect, $consulta );

$consulta = "";
$consulta = $consulta . "INSERT INTO T_Productos ( Sucursal, TipoProducto, Clave1, Producto, Caja, Orden, ";
$consulta = $consulta . "Observacion, CodOficina, FechaProceso_Producto ) ";
$consulta = $consulta . "SELECT T_Prestamos_SFB_1.PR_Sucursal, 9 AS TP, ";
$consulta = $consulta . "T_Prestamos_SFB_1.PR_Cuenta, T_Prestamos_SFB_1.PR_Producto, 99999 AS C, 99999 AS O, ";
$consulta = $consulta . "'Producto ingresado por Interfase - A' AS Obs, 12 AS CO, " . "" . "GETDATE() AS FA" . " ";
$consulta = $consulta . "FROM T_Prestamos_SFB_1 ";
$consulta = $consulta . "ORDER BY T_Prestamos_SFB_1.PR_Cuenta";
$result = odbc_exec($connect, $consulta);

$consulta = "";
$consulta = $consulta . "INSERT INTO T_RelCteProd ( Sucursal, TipoProducto, Clave1, TipoDoc, NroDocumento ) ";
$consulta = $consulta . "SELECT T_Prestamos_SFB_1.PR_Sucursal, 9 AS TP, T_Prestamos_SFB_1.PR_Cuenta, ";
$consulta = $consulta . "T_Prestamos_SFB_1.PR_Tipo_Documento, T_Prestamos_SFB_1.PR_Nro_Documento ";
$consulta = $consulta . "FROM T_Prestamos_SFB_1 ";
$consulta = $consulta . "ORDER BY T_Prestamos_SFB_1.PR_Nro_Documento;";
$result = odbc_exec($connect, $consulta);


// AQUI ES DONDE SE INSERTAN EN LA TABLAS DE LA BASE DE DATOS
$sql = "";
$sql = $sql . "INSERT INTO Productos ( Sucursal, TipoProducto, Clave1, Clave2, Producto, Caja, Orden, Observacion, ";
$sql = $sql . "CodOficina, FechaProceso_Producto ) SELECT DISTINCT T_Productos.Sucursal, T_Productos.TipoProducto, ";
$sql = $sql . "T_Productos.Clave1, T_Productos.Clave2, T_Productos.Producto, T_Productos.Caja, T_Productos.Orden, ";
$sql = $sql . "T_Productos.Observacion, T_Productos.CodOficina, ";
$sql = $sql . "T_Productos.FechaProceso_Producto FROM T_Productos ";
$sql = $sql . "GROUP BY T_Productos.Sucursal, T_Productos.TipoProducto, T_Productos.Clave1, T_Productos.Clave2, ";
$sql = $sql . "T_Productos.Producto, T_Productos.Caja, T_Productos.Orden, T_Productos.Observacion, ";
$sql = $sql . "T_Productos.CodOficina, T_Productos.FechaProceso_Producto;";
$result = odbc_exec($connect, $sql);

$sql = "";
$sql = $sql . "INSERT INTO Clientes ( TipoDoc, NroDocumento, Apellido, Nombre, Caja, Orden, ";
$sql = $sql . "Observacion, CodOficina, FechaProceso_Cliente ) SELECT DISTINCT T_Clientes.TipoDoc, ";
$sql = $sql . "T_Clientes.NroDocumento, T_Clientes.ApeyNom, T_Clientes.Nombre, T_Clientes.Caja, ";
$sql = $sql . "T_Clientes.Orden, T_Clientes.Observacion, T_Clientes.CodOficina, T_Clientes.FechaProceso_Cliente ";
$sql = $sql . "FROM T_Clientes GROUP BY T_Clientes.TipoDoc, T_Clientes.NroDocumento, T_Clientes.ApeyNom, ";
$sql = $sql . "T_Clientes.Nombre, T_Clientes.Caja, T_Clientes.Orden, T_Clientes.Observacion, ";
$sql = $sql . "T_Clientes.CodOficina, T_Clientes.FechaProceso_Cliente;";
//$consulta = $consulta . "FROM T_Clientes WHERE DATEDIFF(DAY,T_Clientes.FechaProceso_Cliente,GETDA TE()) < 1";
$result = odbc_exec($connect, $sql);

// Cierra la conexion
odbc_close($connect);

?>

Etiquetas: insert, registro, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:19.