ASP con VFPRO

Este es mi código pero me arroja un error como lo puedo hacer con un solo Select
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--#include file="inc/objConn.asp"-->
<!--#include file="inc/funciones.asp"-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>VALIDACION Y PROCESO DE VISITAS</title>
</head>
<body style="font-family: Arial; font-size: 9pt">
<% 'Visualiza la hora
response.write "La hora es: " & time()
dim i,vis,emi,folio,codapm,fechavis
dim codiapm
dim varficha
codiapm=trim(request("codapm"))
vis="VIS"+trim(request("meses"))+trim(request("ano"))+trim(request("meses"))+trim(request("ano"))
emi="EMISION"+trim(request("meses"))+trim(request("ano"))+trim(request("meses"))+trim(request("ano"))
%>
<%
dim xInstanciaClase
set xInstanciaClase = new ConeccionDBAccesODBC
call xInstanciaClase.INICIALIZARCLASE()
call xInstanciaClase.conectarclase()
xInstanciaClase.setSql="Select * From emision04040404 where emision04040404.apm='"&codiapm&"'"
xInstanciaClase.LeerDatosRs()
xInstanciaClase.Objrs.MOVEFIRST
dim codigoficha
codigoficha=trim(request.querystring("ficha"))
var=right(left(codigoficha,10),9)
RESPONSE.Write(VAR) %>
<table width="593" border="1" BGCOLOR="#CCCCCC">
<tr>
<td width="103"><font size="2"><strong>Codigo APM:</strong></font></td>
<td width="474" height="22" with="1"><%=xInstanciaClase.Objrs("apm")%></TD>
<tr></tr>
<td width="103"><strong><font size="2">Nombre APM:</font></strong></td>
<td width="474" height="22" with="1"><%=xInstanciaClase.Objrs("apmnom")%></TD>
<tr></tr>
</TABLE>
<table width="591" border="1" BGCOLOR="#CCCCCC">
<td width="219"><strong><font size="2">Nombre Medico:</font></strong></td>
<td width="170"><strong><font size="2">Especialidad:</font></strong></td>
<td width="74"><strong><font size="2">Tipo:</font></strong></td>
<td width="376"><strong><font size="2">Codigo Ficha:</font></strong></td>
<td width="376"><strong><font size="2">Fecha Visita:</font></strong></td>
<tr></tr>
<%While not xInstanciaClase.Objrs.eof%>
<td width="219" height="22" with="1"><%=xInstanciaClase.Objrs("cmpnom")%></TD>
<td width="170" height="22" with="1"><%=xInstanciaClase.Objrs("nomesp")%></TD>
<td width="74" height="22" with="1"><%=xInstanciaClase.Objrs("tipo")%></TD>
<TR></TR>
<% xInstanciaClase.Objrs.MOVENEXT
WEND%>
<% dim zInstanciaClase
set zInstanciaClase = new ConeccionDBAccesODBC
call zInstanciaClase.INICIALIZARCLASE()
call zInstanciaClase.conectarclase()
zInstanciaClase.setSql="SELECT * FROM VIS04040404 WHERE FICHA='"&VAR&"'"
zInstanciaClase.LeerDatosRs()%>
<%While not zInstanciaClase.Objrs.eof%>
<td width="170" height="22" with="1"><%=zInstanciaClase.Objrs("ficha")%></td>
<td width="170" height="22" with="1"><%=zInstanciaClase.Objrs("ult_fecvis")%></td>
<tr></tr>
<% zInstanciaClase.Objrs.MOVENEXT
WEND%>
<%
xInstanciaClase.FINALIZARCLASE()
zInstanciaClase.FINALIZARCLASE()%>
</table>
<CENTER right>
<FORM action="LOGIN_S.asp" method="get" name="form2">
<input name="BOTON3" type="submit" value="VOLVER">
</FORM>
</CENTER>
</BODY>
</HTML>

1 respuesta

Respuesta
1
Para realizar el inner join los campos codigoficha de las 2 tablas deben ser iguales.
Podríamos utilizar una función de SQL que quitara los * de la vis04040404 pero no es muy viable, lo ideal es que los campos dentro de la tabla sean iguales.
El camino más fácil sería poner los dos asteriscos a ambos lados del campo en la tabla emisión. Pra ello `rimero deberías aumentar el tamaño del campo a 11 y probar esta consulta de actualización sobre la tabla emisión:
UPDATE emision04040404 SET codigoficha = "*" & codigoficha & "*"
No la he probado y no se si funcionaria. Prueba en una copia de la base de datvos por si hace algún destrozo puedas conservar la original.
Ya me cuentas...
Lo siento pero sin saber las realciones que puedan existir entre las tablas VIS04040404 y emision04040404 no puedo ver como sustituir todo por un solo select. Debes hacerme una pregunta más concreta, no dispongo de datos suficientes para ayudarte.
Ambas tablas están relacionadas por un campo del mismo nombre que se llama codigoficha que existe en ambas tablas
Gracias
Vale con INNER JOIN lo podras solucionar. Mira, este podría ser un ejemplo:
"Select emision04040404.*, VIS04040404.* From VIS04040404 INNER JOIN VIS04040404 ON VIS04040404.codigoficha= emision04040404.codigoficha where emision04040404.apm='"&codiapm&"' AND VIS04040404. FICHA='"&VAR&"'"
Con emision04040404. *, VIS04040404. * Lo que estas pidiendo es que el SELECT te devuelva todos los campos de las dos tablas si solo quieres escoger algunos de campos de una tabla u otra lo que debes poner son los nombres de los campos precedidos de el nobre de la tabla y el carácter punto.
Por ejemplo si quisieras el campo apm de la tabla emision04040404 y el campo ficha de la tabla VISA04040404, la consulta debería empezar así:
"Select emision04040404.apm, VIS04040404.ficha From...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas