Foros del Web » Programación para mayores de 30 ;) » .NET »

Resultado SQLDataSource en variable

Estas en el tema de Resultado SQLDataSource en variable en el foro de .NET en Foros del Web. Buenos días, Tengo una tabla SQL que se encarga de manejar las IDs primarias de las demás tablas. Por lo tanto, cada vez que quiero ...
  #1 (permalink)  
Antiguo 21/06/2011, 04:29
 
Fecha de Ingreso: junio-2011
Mensajes: 18
Antigüedad: 12 años, 10 meses
Puntos: 0
Resultado SQLDataSource en variable

Buenos días,

Tengo una tabla SQL que se encarga de manejar las IDs primarias de las demás tablas. Por lo tanto, cada vez que quiero insertar algo en las demás tablas, tengo que hacer una consulta la tabla: "TABLAS_ID" para conocer el siguiente ID que corresponde.

Se que está muy mal montado, y que debería estar como identidad la clave primaria de cada tabla, pero debo hacerlo así.

Entonces, lo que necesito es:

- Consulta a BBDD a la tabla "TABLAS_ID" --> SELECT [NEXT_ID] FROM [ID_TABLE] WHERE ([ID_TABLE_ID] = @ID_TABLE_ID)

- Guardar el contenido de NEXT_ID en una variable

- Insertar datos en la tabla TRAIL, introduciendo en el campo ID la variable obtenida en la consulta anterior.

- Actualizar la tabla TABLAS_ID y sumarle uno al campo NEXT_ID que hemos obtenido anteriormente

A ver si me podéis orientar un poquito, ya que ando algo perdido.

Gracias.
  #2 (permalink)  
Antiguo 21/06/2011, 07:54
 
Fecha de Ingreso: junio-2011
Ubicación: Lima Peru
Mensajes: 13
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Resultado SQLDataSource en variable

seria interesante saber por que "debes" hacerlo asi

bueno de la forma en q esta esa bd simplemente pon el dato en una @variable haces el insert con esa @variable y luego le sumas uno y le haces el update o el insert que le haces a la id_table
  #3 (permalink)  
Antiguo 21/06/2011, 13:14
 
Fecha de Ingreso: junio-2011
Mensajes: 18
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Resultado SQLDataSource en variable

Aha! El problema principalmente es como obtengo ese dato para meterlo en una @variable.

ObjectDataSource? SQLDataSource?

Gracias.

Saludos.
  #4 (permalink)  
Antiguo 22/06/2011, 00:04
Avatar de ramirezmario7  
Fecha de Ingreso: febrero-2008
Ubicación: Medellín
Mensajes: 336
Antigüedad: 16 años, 2 meses
Puntos: 56
Respuesta: Resultado SQLDataSource en variable

Hola porque no haces un procedimiento almacenado que te haga todo lo que necesitas en una sola instrucción.

ejemplo

create procedure prueba

as begin

declare @id int
set @id = (select id from tbl_ids)

insert into tbl2 values(@id,val2,val3)

update tbl_ids set id = @id+1

end
  #5 (permalink)  
Antiguo 22/06/2011, 03:34
 
Fecha de Ingreso: junio-2011
Mensajes: 18
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Resultado SQLDataSource en variable

Buenas,

Con el store procedure lo veo bastante más claro, pero sigo teniendo lagunas.

Código:
create procedure prueba

as begin

declare @id int
set @id = (select next_id from ID_TABLE where ID_TABLE_ID = 19)

insert into TTRAIL values(@id,3,232,'descripcion','fecha')

update id_table set NEXT_ID = @id+1 where ID_TABLE_ID = 19


end
Los valores que he resaltado al hacer el insert, debe obtenerlos de mi formulario ASPX. ¿Cómo puedo enviarselos al store procedure?

Gracias!
  #6 (permalink)  
Antiguo 22/06/2011, 21:17
Avatar de ramirezmario7  
Fecha de Ingreso: febrero-2008
Ubicación: Medellín
Mensajes: 336
Antigüedad: 16 años, 2 meses
Puntos: 56
Respuesta: Resultado SQLDataSource en variable

Hola esos valores los deberías de tirar desde el aspx como parámetros.

agregas en el procedure los parámetros necesarios para el insert y desde el aspx le llevas esos parametros.


en el sp seria algo asi

create procedure prueba

--aca los parametros
@parametro1 int,
@parametro2 int,
@parametro3 varchar(50)

as
begin

insert into tbl1 values(@parametro1,@parametro2,@parametro3)

end

en el aspx al comando le debes de decir que es un procedure
  #7 (permalink)  
Antiguo 30/06/2011, 03:43
 
Fecha de Ingreso: junio-2011
Mensajes: 18
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Resultado SQLDataSource en variable

Gracias ramirezmario7, con todo lo perdido que iba, me voy haciendo una idea seria. Hoy me he vuelto a poner manos a la obra. Os detallo lo que tengo:

Stored procedure en SQL
Código:
USE [trackpaso]
GO
/****** Object:  StoredProcedure [dbo].[prueba]    Script Date: 06/30/2011 10:43:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[prueba]

as begin

declare @id int
declare @numticket int
declare @changedby int
declare @descripcion varchar(500)
declare @fecha date

set @id = (select next_id from ID_TABLE where ID_TABLE_ID = 19)

insert into TTRAIL values(@id,@numticket,@changedby,@descripcion,@fecha,0)

update id_table set NEXT_ID = @id+1 where ID_TABLE_ID = 19


end
CODE BEHIND ASPX
Código:
 Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        txtfecha.Text = Now

        Dim parametro As New System.Data.SqlClient.SqlParameter
        Dim objCommand As New SqlClient.SqlCommand("prueba"), _
    Conexion As String = "server='localhost'; user id='sa'; password='xxxxxxx'; database='trackpaso'"

        objCommand.CommandType = CommandType.StoredProcedure


       
        parametro = New System.Data.SqlClient.SqlParameter
        parametro.ParameterName = "@numticket"
        parametro.Value = CInt(Me.lblNumTick.Text)
        objCommand.Parameters.Add(parametro)

        parametro = New System.Data.SqlClient.SqlParameter
        parametro.ParameterName = "@changedby"
        parametro.Value = 232
        objCommand.Parameters.Add(parametro)

        parametro = New System.Data.SqlClient.SqlParameter
        parametro.ParameterName = "@descripcion"
        parametro.Value = txtcomentario.Text
        objCommand.Parameters.Add(parametro)

        parametro = New System.Data.SqlClient.SqlParameter
        parametro.ParameterName = "@fecha"
        parametro.Value = txtfecha.Text
        objCommand.Parameters.Add(parametro)



        objCommand.Connection = New SqlClient.SqlConnection(Conexion)
        objCommand.Connection.Open()
        objCommand.ExecuteNonQuery()
        objCommand.Connection.Close()


    End Sub
El error que me tira el compilador al intentar añadir un comentario es:

El procedimiento prueba no tiene parámetros y se han proporcionado argumentos.

Este error me lo da en la linea del ExecuteNonQuery.

Gracias por todo!
  #8 (permalink)  
Antiguo 30/06/2011, 07:53
Avatar de ramirezmario7  
Fecha de Ingreso: febrero-2008
Ubicación: Medellín
Mensajes: 336
Antigüedad: 16 años, 2 meses
Puntos: 56
Respuesta: Resultado SQLDataSource en variable

Hola los parametros que entras desde el aspx se deben de declaran en el sp antes del as begin

prueba asi

Código SQL:
Ver original
  1. USE [trackpaso]
  2. GO
  3. /****** Object:  StoredProcedure [dbo].[prueba]    Script Date: 06/30/2011 10:43:38 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. ALTER PROCEDURE [dbo].[prueba]
  9.  
  10. @numticket INT,
  11. @changedby INT,
  12. @descripcion VARCHAR(500),
  13. @fecha DATE
  14.  
  15. AS BEGIN
  16.  
  17. DECLARE @id INT
  18.  
  19.  
  20. SET @id = (SELECT next_id FROM ID_TABLE WHERE ID_TABLE_ID = 19)
  21.  
  22. INSERT INTO TTRAIL VALUES(@id,@numticket,@changedby,@descripcion,@fecha,0)
  23.  
  24. UPDATE id_table SET NEXT_ID = @id+1 WHERE ID_TABLE_ID = 19
  25.  
  26.  
  27. END
  #9 (permalink)  
Antiguo 01/07/2011, 04:16
 
Fecha de Ingreso: junio-2011
Mensajes: 18
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Resultado SQLDataSource en variable

Funcionó genial! Muchísimas gracias!

Etiquetas: sqldatasource, resultados, variables
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 14:24.