Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   ASP Clásico (http://www.forosdelweb.com/f15/)
-   -   verificar si dato en excel esta en base de datos sql server (http://www.forosdelweb.com/f15/verificar-si-dato-excel-esta-base-datos-sql-server-601362/)

rezocrew 30/06/2008 10:21

verificar si dato en excel esta en base de datos sql server
 
hola amigos resulta que estoy tratantado de depurar mi codigo de subir una planilla excel a mi base de datos sql server y tengo una duda y queria ver si me la pueden responder.


mi base de datos consta de dos tablas, la relacion es de uno a muchos

usuario
nombre
rut

consumo
rut
fecha consumo
monto

resulta que que al momento de subir mi planilla excel a la base de datos va validando que cada rut que esta en la planilla excel se encuentre en la tabla1 pero cuando llega un rut desde la planilla excel que no esta en la tabla 1 el sistema se cae y arroja error.

entonces yo quiero que en vez que se caiga cuado no encuentra el rut en la tabla1 , no ingrese el registro desde la planilla excel a la tabla2 y simplemente lo salta y sigue con el sgte registro de la planilla excel, pero no se si se puede hacer esto

Myakire 30/06/2008 10:25

Respuesta: verificar si dato en excel esta en base de datos sql server
 
así a lo rápido, dos formas:

Pon un manejador de errores, así en caso de que truene por duplicado, el asunto no te interrumpirá el programa y continuará con el siguiente registro.

Antes de grabar, haz una consulta buscando el valor :-D

saludos

rezocrew 30/06/2008 10:40

Respuesta: verificar si dato en excel esta en base de datos sql server
 
me podrias explicar mas lentamente por favor, como pongo un manejador de errores no entiendo mucho pues no se como hacer una vez detectado el error me siga corriendo y no interrumpa el programa



y con respecto a la segunda opcion yo estoy usando el stgte metodo para subir la planilla excel

sql2.CommandText= "INSERT INTO Consumo(Consumo_Tabla1_Rut,Consumo_Operador, Consumo_Cliente, Consumo_Celular, Consumo_Plan, Consumo_Fecha_Consumo, Consumo_Hora_Consumo,Consumo_Duracion_Consumo,Cons umo_Numero_Destino,Consumo_Destino, Consumo_Monto_Dolares, Consumo_Monto_Pesos)" & _
" SELECT Consumo_Tabla1_Rut,Consumo_Operador,Consumo_Client e,Consumo_Celular,Consumo_Plan,Consumo_Fecha_Consu mo,Consumo_Hora_Consumo,Consumo_Duracion_Consumo,C onsumo_Numero_Destino,Consumo_Destino,Consumo_Mont o_Dolares,Consumo_Monto_Pesos FROM " & _
"OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', " & _
"'Data Source= "&ruta2&" ;Extended Properties=Excel 8.0')...[Hoja1$]"
entonces no se donde colocar la consulta :S!!

rezocrew 30/06/2008 13:03

Respuesta: verificar si dato en excel esta en base de datos sql server
 
lo hice de esta forma pero tampoco me funciona

sql2.CommandText= "INSERT INTO Consumo(Consumo_Tabla1_Rut,Consumo_Operador, Consumo_Cliente, Consumo_Celular, Consumo_Plan, Consumo_Fecha_Consumo, Consumo_Hora_Consumo,Consumo_Duracion_Consumo,Cons umo_Numero_Destino,Consumo_Destino, Consumo_Monto_Dolares, Consumo_Monto_Pesos)" & _
" SELECT Consumo_Tabla1_Rut,Consumo_Operador,Consumo_Client e,Consumo_Celular,Consumo_Plan,Consumo_Fecha_Consu mo,Consumo_Hora_Consumo,Consumo_Duracion_Consumo,C onsumo_Numero_Destino,Consumo_Destino,Consumo_Mont o_Dolares,Consumo_Monto_Pesos FROM " & _
"OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', " & _
"'Data Source= "&ruta2&" ;Extended Properties=Excel 8.0')...[Hoja1$],Tabla1 WHERE (Tabla1_Rut IN(SELECT Consumo_Tabla1_Rut FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', " & _
"'Data Source= "&ruta2&" ;Extended Properties=Excel 8.0')...[Hoja1$]) )"

sql2.execute


el texto en negirto es lo que agregue para que me coloque los puros registros de excel que su rut aparece tambien en la tabla1 de mi base de datos sql server pero no pasa nada y no se como hacerlo ayudenme por favor

JuanRAPerez 30/06/2008 14:09

Respuesta: verificar si dato en excel esta en base de datos sql server
 
puedes hacer un insert en un while para verificar si el registro existe o no antes de tratar insertarlo

+ lees tu hoja de excel
+ haces tu RecordSet
+ con el valor de el registro vas a la base a comprar si existe el valor
+ si existe te lo saltas
+ si no existe lo insertas
+ te mueves al siguiente registro

mas trabajo pero creo que es un mejor control
podes hasta llevar control de cuantos insertaste y cuantos se discriminaron

suerte

rezocrew 30/06/2008 14:18

Respuesta: verificar si dato en excel esta en base de datos sql server
 
entiendo el concepto pero no se como hacer para saltar el registro, me puedes especificar ese punto por favor

Shiryu_Libra 30/06/2008 15:29

Respuesta: verificar si dato en excel esta en base de datos sql server
 
Juan (:adios:), se refiere a si fuese una lectura normal, y en dado caso de encontrar los datos entonces y solo entonces realizar la insercion en la tabla

haber deja ver con que idea loka formulo con los datos que has puesto

:neurotico: Mad Science :pirata:

JuanRAPerez 30/06/2008 15:59

Respuesta: verificar si dato en excel esta en base de datos sql server
 
maestro Shiryu_Libra

:) tienes toda la razón

Shiryu_Libra 30/06/2008 19:12

Respuesta: verificar si dato en excel esta en base de datos sql server
 
:adios: no se si esto sea lo que requieres... no tenia nada que hacer asi que...

en este ejemplo se usa EXCEL - ACCESS

habria que verificar antes de realizar la insercion la comprobacion de no datos repetidos... a tambien cambia la conexion, ya que estoy utilizando ACE12, en lugar de JET4

:pensando:... y ahora que hago :pensando:

rezocrew 01/07/2008 08:20

Respuesta: verificar si dato en excel esta en base de datos sql server
 
hola probe el codigo y me arroja el sgte error

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC SQL Server Driver][SQL Server]INSERT statement conflicted with COLUMN FOREIGN KEY constraint 'FK_Consumo_Tabla1'. The conflict occurred in database 'DBRoaming', table 'Tabla1', column 'Tabla1_Rut'.

/Proyecto_Roaming/rezocrew/rezocrew.asp, line 108

esto debido a que el rut que estoy subiendo en la planilla no se encuentra en la tabla usuario (la linea 108 es justo la linea de insercion "insercion.execute(insertar) " con lo cual no alcanzo a llegar al if para preguntar si la insercion fue correcta o no :() mi pregunta es esa , en que parte del codigo yo hago la comparacion del rut de la planilla con el rut de la tabla usuario para ver si es que el rut de la planilla es igual a alguno de los rut de la tabla usuario para recien poder subirlo a la tabla consumo

Shiryu_Libra 01/07/2008 11:03

Respuesta: verificar si dato en excel esta en base de datos sql server
 
:pensando: .... oye rezo, son 2 hojas de excel diferentes?
realizas comprobacion en 2 hojas para tu RUT??

si es asi, tendras que anexar esa hoja de excel, y realizar ese procedimiento en la consulta primaria, a lo mejor me hicieron falta datos, verifica las sentencias

es por donde deberias empezar :adios:

rezocrew 01/07/2008 12:35

Respuesta: verificar si dato en excel esta en base de datos sql server
 
nop , es una sola hoja excel que tiene los registros que deben migrar a la tabla consumo pero antes deben ser validados por la tabla usuario mediante el rut,

osea antes de insertar el registro de la planilla en la tabla consumo este debe validarse en la tabla usuario mediante el rut si el rut que esta en el registro excel tambien esta en el registro de la tabla usuario recien lo insertamos el registro de la planilla excel en la tabla consumo.

eso es lo que kero haccer

Shiryu_Libra 01/07/2008 13:09

Respuesta: verificar si dato en excel esta en base de datos sql server
 
:pensando:
y si en el select se realizara la consulta directa como lo haces en tu codigo??

Código PHP:

"SELECT "&_
        
"Consumo_Tabla1_Rut,"&_
        
"Consumo_Operador,"&_
        
"Consumo_Cliente,"&_
        
"Consumo_Celular,"&_
        
"Consumo_Plan,"&_
        
"Consumo_Fecha_Consumo,"&_
        
"Consumo_Hora_Consumo,"&_
        
"Consumo_Duracion_Consumo,"&_
        
"Consumo_Numero_Destino,"&_
        
"Consumo_Destino,"&_
        
"Consumo_Monto_Dolares,"&_
        
"Consumo_Monto_Pesos FROM "&_
        
"[Hoja1$],Tabla1 "&_
        
"WHERE "&_
        
"(Tabla1_Rut IN(SELECT Consumo_Tabla1_Rut FROM "&_
        
"[Hoja1$])" 


rezocrew 01/07/2008 14:46

Respuesta: verificar si dato en excel esta en base de datos sql server
 
cuando hago la consulta directa ocupo el OPENDATASOURCE y con ese metodo no se como hacerlo para generar esa consulta y la comparacion :S


La zona horaria es GMT -6. Ahora son las 20:35.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.