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

Evitar duplicidad

Estas en el tema de Evitar duplicidad en el foro de ASP Clásico en Foros del Web. Hola Amigos una consulta rapida como hago para que mi codigo valide si hay un dato que intento ingresar en mi bd antes de insertarlo, ...
  #1 (permalink)  
Antiguo 26/05/2009, 12:39
 
Fecha de Ingreso: septiembre-2007
Mensajes: 318
Antigüedad: 17 años, 7 meses
Puntos: 1
De acuerdo Evitar duplicidad

Hola Amigos una consulta rapida como hago para que mi codigo valide si hay un dato que intento ingresar en mi bd antes de insertarlo, de esta forma evitar ingresarlo nuevamente.

Basicamente lo que quiero es que si hay un dato en mi bd este se actualize y si no hay este inserte lo estoy tratando de hacer asi


if rs1.eof= false then
update........... ,

else

insert.......

end if

pero no me funsiona no hace update ni insert cuando reconoce la existencia de algun dato en la bd
  #2 (permalink)  
Antiguo 26/05/2009, 14:34
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: Evitar duplicidad

tomando como ejemplo un "nickname"

Cita:
'tomando valor del formulario
criterio = request.form("nickname")

'se realiza la consulta
select nickname from tabla
' todo el procedimiento necesario para ejecutar

'valido el valor de formulario contra base de datos
if criterio = rs.fields.item("nickname").value then
'caso afirmativo
response.write "ya esta"
else
'caso negativo
response.write "disponible"
end if

'cierras todos los componentes de consulta... limpias variables etc....
seria un similar....
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #3 (permalink)  
Antiguo 27/05/2009, 07:06
 
Fecha de Ingreso: septiembre-2007
Mensajes: 318
Antigüedad: 17 años, 7 meses
Puntos: 1
De acuerdo Respuesta: Evitar duplicidad

Gracias por responder tan raipo.

Ahora quisiera pedirte el favor que me mostraras un ejemplo pero con codigo para saber como hacerlo un ejemplo solamente.

Y una ultima consulta como podria yo hacer inset en varias tablas al mismo tiempo y update al mismo tiempo en varias tablas, porque que pasa una ves validado si hay un dato en mi bd lo podria actualizar y sino no hay inserto el nuevo dato, esta es basicamente lo que necesito pero no me inserta ni me modifica cuando valido si hay o no dato en la bd...


me podrias ayudar con esto por favor

Gracias.....
  #4 (permalink)  
Antiguo 27/05/2009, 07: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: Evitar duplicidad

anexa tu codigo.. para verificacion
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #5 (permalink)  
Antiguo 27/05/2009, 09:47
 
Fecha de Ingreso: septiembre-2007
Mensajes: 318
Antigüedad: 17 años, 7 meses
Puntos: 1
De acuerdo Respuesta: Evitar duplicidad

Esto es lo que tengo hecho

vivienda=Request.Form("vivienda")
vehiculo=Request.Form("vehiculo")
licencia=Request.Form("licencia")
Dim oConn1, rs1, sql1
set oConn1 = Server.CreateObject("ADODB.Connection")
OConn1.Open "Provider=SQLOLEDB;Data Source=jnjvecatempdb;Initial Catalog=yyyyy; User Id=sa;Password=xxxxx;"
sql1 = "INSERT INTO ficha_vehicular (codfic,vehicu,gralic) VALUES (" & codfic & ","& vehiculo &"," & licencia &")"
oConn1.Execute(sql1)

que quiero insertar en la tabla vivienda al mismo tiempo que se ejecuta el insert de ficha_vehicular como lo puedo hacer.

como puedo hacer insert masivo en varias tablas al mismo tiempo, intente haciendo lo siguiente:

sql1 = "INSERT INTO ficha_vehicular (codfic,vehicu,gralic) VALUES (" & codfic & ","& vehiculo &"," & licencia &")"
sql2 = "INSERT INTO ficha_vivienda (codfic,tipvivi) VALUES (" & codfic & ","& vivienda &")"

Pero no me resulto, me prodrias ayudar como podria hacer este insert en varias tablas.

Muchas Gracias
  #6 (permalink)  
Antiguo 27/05/2009, 10:42
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: Evitar duplicidad

entonces primero verificas que "codfic" en la tabla vehicular para despues ingresar en vivienda...? ese es el punto de referencia???
pero si en vivienda hay algun repetido no importa???

???
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #7 (permalink)  
Antiguo 27/05/2009, 10:43
Avatar de Esfinge02  
Fecha de Ingreso: septiembre-2008
Ubicación: Cd. Victoria Tam
Mensajes: 162
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: Evitar duplicidad

mas sencillo.
as una con sulta con un parametro clave de la insercion y despues condicionas,

if not rs.eof then
actualisas
else
insertas
end if
__________________
La ignorancia es una bendición o un privilegio, yo lo siento programadores
  #8 (permalink)  
Antiguo 27/05/2009, 11:42
 
Fecha de Ingreso: septiembre-2007
Mensajes: 318
Antigüedad: 17 años, 7 meses
Puntos: 1
De acuerdo Respuesta: Evitar duplicidad

Muchachos muchas gracias por contestar de verdad pero vamos a omirtir por ahora el hecho de duplicidad y disculpe que cambien un tanto el tema y digo un poco porque luego de saber como hacer esto que les voy a preguntar si voy a verificar la duplicidad.

Les formulo nuevamente la pregunta como puedo hacer para hacer varios insert al mismo tiempo a tablas distintas como puedo hacer esto. por ejemplo tengo 6 tablas distintas y debo insertar data en cada una de ellas, esta data la recogo de un formulario y necesito insertarlas en su respectiva tabla.

Les pongo el mismo ejemplo:

Si tengo este codigo:
if not rs.eof then
/*aqui iran los 6 update a las 6 tablas distintas*/
else
/*aqui iran los 6 insert a las 6 tablas distintas*/
end if

Como puedo hacer los 6 insert y los 6 update????

Muchisimas Gracias.
  #9 (permalink)  
Antiguo 27/05/2009, 12:28
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años, 3 meses
Puntos: 126
Respuesta: Evitar duplicidad

Hola

Prueba así, usando trasiciones

Código asp:
Ver original
  1. conn.BeginTrans
  2.  
  3. sql1 = "INSERT INTO ficha_vehicular (codfic,vehicu,gralic) VALUES (" & codfic & ","& vehiculo &"," & licencia &")"
  4. conn.Execute(sql1)
  5. if Err.number <> 0 Then
  6. Response.Clear ()
  7. conn.RollBackTrans
  8. Err.Clear ()
  9. Response.End ()
  10. end if
  11.  
  12. sql2 = "INSERT INTO ficha_vivienda (codfic,tipvivi) VALUES (" & codfic & ","& vivienda &")"
  13. conn.Execute(sql2)
  14. if Err.number <> 0 Then
  15. Response.Clear ()
  16. conn.RollBackTrans
  17. Err.Clear ()
  18. Response.End ()
  19. end if
  20.  
  21. conn.CommitTrans
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #10 (permalink)  
Antiguo 28/05/2009, 07:54
 
Fecha de Ingreso: septiembre-2007
Mensajes: 318
Antigüedad: 17 años, 7 meses
Puntos: 1
De acuerdo Respuesta: Evitar duplicidad

Hola Amigos una consulta intento ingresar un dato a mi bd y me sale el siguiente error

Microsoft OLE DB Provider for SQL Server (0x80040E14)
The name 'fsddddddf' is not permitted in this context. Only constants, expressions, or variables allowed here. Column names are not permitted.

porque me puede estar saliendo este error y como lo soluciono muchas gracias
  #11 (permalink)  
Antiguo 29/05/2009, 05:17
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años, 3 meses
Puntos: 126
Respuesta: Evitar duplicidad

Hola

Cita:
Iniciado por banrey Ver Mensaje
Hola Amigos una consulta intento ingresar un dato a mi bd y me sale el siguiente error

Microsoft OLE DB Provider for SQL Server (0x80040E14)
The name 'fsddddddf' is not permitted in this context. Only constants, expressions, or variables allowed here. Column names are not permitted.

porque me puede estar saliendo este error y como lo soluciono muchas gracias
Muestra la porción de código que te lanza este error

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #12 (permalink)  
Antiguo 31/05/2009, 01:39
Avatar de Esfinge02  
Fecha de Ingreso: septiembre-2008
Ubicación: Cd. Victoria Tam
Mensajes: 162
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: Evitar duplicidad

a ojo de buen cubero, creo que estas tratando de insertar, o tratas de actualizar un capo que no existe o simplemente la longitud o el tipo no son los mismos, utilizas procedimientos almacenados, para esto....
__________________
La ignorancia es una bendición o un privilegio, yo lo siento programadores
  #13 (permalink)  
Antiguo 01/06/2009, 09:47
Avatar de adiazm  
Fecha de Ingreso: julio-2008
Ubicación: Santiago
Mensajes: 51
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Evitar duplicidad

"Only constants, expressions, or variables allowed here"

Esa es la clave. ;)
  #14 (permalink)  
Antiguo 01/06/2009, 10:08
 
Fecha de Ingreso: septiembre-2007
Mensajes: 318
Antigüedad: 17 años, 7 meses
Puntos: 1
De acuerdo Respuesta: Evitar duplicidad

correcto lo hice por procedimientos almacenados ahora tengo otro inconveniente tengo la necesidad de generar un reporte en excel desde asp y lo hago de la siguiente forma:
<%
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader "Content-Disposition", "filename=reporte.xls;"
%>


<%
Dim oConn1, rs1, sql1
set oConn1 = Server.CreateObject("ADODB.Connection")
set rs1=Server.CreateObject("ADODB.Recordset")
oConn1.Open "Provider=SQLOLEDB;Data Source=jnjvecatempdb;Initial Catalog=yyy; User Id=sa;Password=xxx;"
sql1= "SELECT datos_personales.cedfic"
rs1.Open SQL1,oConn1,1,2
'oConn1.Execute sql1,rs1
if rs1.EOF then
'Response.Write("<P align=center><FONT face=Arial size=2>No hay ningún registro en esta tabla</font></p>")
else
PintarTabla
end if
Sub PintarTabla ()
Response.Write("<TABLE name=inicio align=center border=1 width=50% cellPadding=0 cellSpacing=0>" & vbCrlf)
Response.Write( "<TR name=encabezado>" & vbCrlf)
Response.Write( "<TD><FONT face=Arial size=""1""><B>Cédula</B></font></TD>" & vbCrlf )
Response.Write( "<TD><FONT face=Arial size=""1""><B>Rif</B></font></TD>" & vbCrlf )
Response.Write( "</TR>" & vbCrlf )
while not rs1.EOF
Response.Write( "<TR>" & vbCrlf )
Response.Write( "<TD><FONT face=Arial size=""1"">" & rs1.Fields("cedfic") & "</font></TD>" )
Response.Write( "<TD><FONT face=Arial size=""1"">" & rs1.Fields("riffic") & "</font></TD>" )
Response.Write( "</TR>" & vbCrlf )
rs1.MoveNext
wend
Response.Write("</TABLE name=fin>")
End Sub 'PintarTabla
%>

Que sucede nada me vota el siguiente error:

Active Server Pages, ASP 0113 (0x80004005)
The maximum amount of time for a script to execute was exceeded. You can change this limit by specifying a new value for the property Server.ScriptTimeout or by changing the value in the IIS administration tools.

y no me genera el archivo nunca que pordra ser.
  #15 (permalink)  
Antiguo 01/06/2009, 12:47
Avatar de Esfinge02  
Fecha de Ingreso: septiembre-2008
Ubicación: Cd. Victoria Tam
Mensajes: 162
Antigüedad: 16 años, 7 meses
Puntos: 2
Pregunta Respuesta: Evitar duplicidad

al parecer se te acabo el tiempo de ejecución del scrip lo que puedes hacer es cambiar este tiempo en el servidor o agrega este código al principio.....

Cita:
response.Buffer = false
Server.ScriptTimeout = 1400
el tiempo "1400" esto puede ser cambiado a tu conveniencia
__________________
La ignorancia es una bendición o un privilegio, yo lo siento programadores

Última edición por Esfinge02; 01/06/2009 a las 12:52
  #16 (permalink)  
Antiguo 01/06/2009, 13:07
Avatar de adiazm  
Fecha de Ingreso: julio-2008
Ubicación: Santiago
Mensajes: 51
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Evitar duplicidad

¿Pero y el otro error lo solucionaste?.


Cita:
Iniciado por banrey Ver Mensaje
correcto lo hice por procedimientos almacenados ahora tengo otro inconveniente tengo la necesidad de generar un reporte en excel desde asp y lo hago de la siguiente forma:
<%
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader "Content-Disposition", "filename=reporte.xls;"
%>


<%
Dim oConn1, rs1, sql1
set oConn1 = Server.CreateObject("ADODB.Connection")
set rs1=Server.CreateObject("ADODB.Recordset")
oConn1.Open "Provider=SQLOLEDB;Data Source=jnjvecatempdb;Initial Catalog=yyy; User Id=sa;Password=xxx;"
sql1= "SELECT datos_personales.cedfic"
rs1.Open SQL1,oConn1,1,2
'oConn1.Execute sql1,rs1
if rs1.EOF then
'Response.Write("<P align=center><FONT face=Arial size=2>No hay ningún registro en esta tabla</font></p>")
else
PintarTabla
end if
Sub PintarTabla ()
Response.Write("<TABLE name=inicio align=center border=1 width=50% cellPadding=0 cellSpacing=0>" & vbCrlf)
Response.Write( "<TR name=encabezado>" & vbCrlf)
Response.Write( "<TD><FONT face=Arial size=""1""><B>Cédula</B></font></TD>" & vbCrlf )
Response.Write( "<TD><FONT face=Arial size=""1""><B>Rif</B></font></TD>" & vbCrlf )
Response.Write( "</TR>" & vbCrlf )
while not rs1.EOF
Response.Write( "<TR>" & vbCrlf )
Response.Write( "<TD><FONT face=Arial size=""1"">" & rs1.Fields("cedfic") & "</font></TD>" )
Response.Write( "<TD><FONT face=Arial size=""1"">" & rs1.Fields("riffic") & "</font></TD>" )
Response.Write( "</TR>" & vbCrlf )
rs1.MoveNext
wend
Response.Write("</TABLE name=fin>")
End Sub 'PintarTabla
%>

Que sucede nada me vota el siguiente error:

Active Server Pages, ASP 0113 (0x80004005)
The maximum amount of time for a script to execute was exceeded. You can change this limit by specifying a new value for the property Server.ScriptTimeout or by changing the value in the IIS administration tools.

y no me genera el archivo nunca que pordra ser.
  #17 (permalink)  
Antiguo 01/06/2009, 15:41
Avatar de Esfinge02  
Fecha de Ingreso: septiembre-2008
Ubicación: Cd. Victoria Tam
Mensajes: 162
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: Evitar duplicidad

por eso el codigo agregaselo esto te permite maipular el tiempo...
Cita:
You can change this limit by specifying a new value for the property Server.ScriptTimeout or by changing the value in the IIS administration tools.
incrementa el tiempo de la ejecucion del procedimenton en el asp
__________________
La ignorancia es una bendición o un privilegio, yo lo siento programadores
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 01:09.