SQL - Problema con sentencia

 
Vista:

Problema con sentencia

Publicado por Pedro (2 intervenciones) el 07/08/2006 23:48:01
Hola amigos foristas

Tengo un problemita, he tratado de realizar una sentencia en la cual capturo el maximo de un campo de la tabla data(Tabla DATA campos , ident,c1,c2,c3.......)
SELECT MAX(IDENT)
INTO :ls_max
FROM DATA;
IF(isnull(ls_max))THEN
li_registro=0;
ELSE
li_registro=long(ls_max)+1;
END IF
ls_max=string(li_registro)

es un proceso en cual quiero insertar una cantidad de registros agregandolos a la tabla, pero con la condicion de que si el valor del campo C1(formulario) esta en la tabla ya registrado lo lo inserte y de un salto oviando esta insercion.
todo esta sentencia con la captura del numero mayor de ident.
SELECT IDENT,FORMULARIO,PLACA,MONTO,ESTACION,,RECLAMO,TIPO_INF
FROM DATA2005
WHERE formulario=:PRI_1 using sqlca;
if sqlca.sqlcode=0 then
messagebox('Sistema', 'El Formulario ya se encuentra registrado')
else
INSERT INTO DATA(IDENT,formulario,placa,monto,estacion,reclamo,tipo_inf)
VALUES(:ls_max,:PRI_1,:PRI_2,:PRI_3,:PRI_4,:PRI_5,:PRI_6)USING SQLCA;

IF sqlca.sqlcode=-1 then
ROLLBACK USING SQLCA;
//messagebox('Sistema','No se grabo!!!')
ELSE
COMMIT USING SQLCA;
//messagebox('Sistema','Grabacion OK!!!')
END IF

Espero que me haya explicado bien sino avisenmen necesito ayuda, ya que cuando aplico la sentencia no inserta la condicion de si el formulario existe
Ayuda please
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con sentencia

Publicado por Isaías (5072 intervenciones) el 08/08/2006 01:54:36
¿Que base de datos tienes?, ¿En que lenguaje estas programando en tu cliente?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con sentencia

Publicado por Pedro (2 intervenciones) el 08/08/2006 16:10:49
Mi Base de datos esta en SQL server, el lenguaje en que programo es en PowerBuilder.

Lo que pasa es que no puedo realizar dos select en una sola sentencia, como ya comente primero deseo obtener el maximo numero del campo Ident, y despues quiero realizar el recorrido para verificar si se encuentra un campo registrado por un usuario para comprobar si exite si es asi no realizar la insercion de lo contrario lo inserta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con sentencia

Publicado por Isaías (5072 intervenciones) el 08/08/2006 18:03:45
Debes trabajar bajo un esquema CLIENTE-SERVIDOR, esto es, ejecutar solo STORE PROCEDURES, nada de codigo T-SQL en tu front (Power Builder), por ejemplo:

CREATE PROCEDURE pr_InsertaRegistro
@id INT -- Mi variable
AS
BEGIN
SET NOCOUNT ON
-- Verifico si existe, de ser asi, mando un mensaje de error al front
IF EXISTS(SELECT ID FROM MyTabla WHERE ID = @id)
BEGIN
SELECT -1, 'Ya existe la llave en la tabla
RETURN(0)
END
-- De lo contrario, inserto el registro
INSERT INTO MyTabla VALUES(.........................

END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con sentencia

Publicado por Pedro (19 intervenciones) el 08/08/2006 18:35:42
Gracias Isaías
tratare de realizarlo y vere como sale segun lo que me indicastes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar