Foros del Web » Programando para Internet » ASP Clásico »

verificar si dato en excel esta en base de datos sql server

Estas en el tema de verificar si dato en excel esta en base de datos sql server en el foro de ASP Clásico en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 30/06/2008, 10:21
 
Fecha de Ingreso: octubre-2007
Ubicación: Santiago ,Chile
Mensajes: 146
Antigüedad: 17 años, 6 meses
Puntos: 0
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
  #2 (permalink)  
Antiguo 30/06/2008, 10:25
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
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

saludos
  #3 (permalink)  
Antiguo 30/06/2008, 10:40
 
Fecha de Ingreso: octubre-2007
Ubicación: Santiago ,Chile
Mensajes: 146
Antigüedad: 17 años, 6 meses
Puntos: 0
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!!

Última edición por rezocrew; 30/06/2008 a las 13:07
  #4 (permalink)  
Antiguo 30/06/2008, 13:03
 
Fecha de Ingreso: octubre-2007
Ubicación: Santiago ,Chile
Mensajes: 146
Antigüedad: 17 años, 6 meses
Puntos: 0
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
  #5 (permalink)  
Antiguo 30/06/2008, 14:09
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
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
__________________
JuanRa Pérez
San Salvador, El Salvador
  #6 (permalink)  
Antiguo 30/06/2008, 14:18
 
Fecha de Ingreso: octubre-2007
Ubicación: Santiago ,Chile
Mensajes: 146
Antigüedad: 17 años, 6 meses
Puntos: 0
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
  #7 (permalink)  
Antiguo 30/06/2008, 15:29
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 1 mes
Puntos: 88
Respuesta: verificar si dato en excel esta en base de datos sql server

Juan (), 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

: Mad Science
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #8 (permalink)  
Antiguo 30/06/2008, 15:59
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Respuesta: verificar si dato en excel esta en base de datos sql server

maestro Shiryu_Libra

:) tienes toda la razón
__________________
JuanRa Pérez
San Salvador, El Salvador
  #9 (permalink)  
Antiguo 30/06/2008, 19:12
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 1 mes
Puntos: 88
Respuesta: verificar si dato en excel esta en base de datos sql server

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

... y ahora que hago
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #10 (permalink)  
Antiguo 01/07/2008, 08:20
 
Fecha de Ingreso: octubre-2007
Ubicación: Santiago ,Chile
Mensajes: 146
Antigüedad: 17 años, 6 meses
Puntos: 0
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
  #11 (permalink)  
Antiguo 01/07/2008, 11:03
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 1 mes
Puntos: 88
Respuesta: verificar si dato en excel esta en base de datos sql server

.... 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
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #12 (permalink)  
Antiguo 01/07/2008, 12:35
 
Fecha de Ingreso: octubre-2007
Ubicación: Santiago ,Chile
Mensajes: 146
Antigüedad: 17 años, 6 meses
Puntos: 0
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
  #13 (permalink)  
Antiguo 01/07/2008, 13:09
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 1 mes
Puntos: 88
Respuesta: verificar si dato en excel esta en base de datos sql server


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$])" 
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #14 (permalink)  
Antiguo 01/07/2008, 14:46
 
Fecha de Ingreso: octubre-2007
Ubicación: Santiago ,Chile
Mensajes: 146
Antigüedad: 17 años, 6 meses
Puntos: 0
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
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 23:35.