Funcion para validar Fechas , en Visual Basic (Visual estudio 2010)
La función toma un string y verifica si es una fecha , en caso positivo devuelve true, en casos negativos False .
Public Function Esfecha(Fecha As String)
Dim cadena As Date
If Fecha = "" Then
Return False
End If
Try
cadena = CDate(Fecha)
If Not IsDate(cadena) Then
Return False
End If
Catch ex As Exception
Return False
End Try
Return True
End Function
SQL Server Function - Convertir Bytes en KB, MB, GB, TB, PB o EB en un formato de salida "humano" que sea mas entendible.
Buenas !!
Estaba haciendo una aplicación que escanea archivos del pc y guarda sus datos en sql server , uno de los datos importantes que guarda en el tamaño , al dato lo guardo en bytes , como se ve en el siguiente gráfico
armando la vista :

con lo cual me había surgido el tema de poder hacer una vista en sql server que me mostrara los detalles de los archivos pero que el tamaño pudiera verse en unidades mas "humanas"
buscando en internet encontré esta función: http://myitforum.com/cs2/blogs/jnelson/archive/2008/01/11/111351.aspx
a la cual le corregi el "after por el "Create" y la ejecute , se creo la función sin ningún problema .
Luego comprobé el funcionamiento en unas consultas de pruebas

Por ultimo no me quedo mas que modificar la vista que ya tenia creada modificando el campo tamaño para formatear usando la funcion recien creada .

Dando como resultado :

Saludos .
Adrian Seimandi
Estaba haciendo una aplicación que escanea archivos del pc y guarda sus datos en sql server , uno de los datos importantes que guarda en el tamaño , al dato lo guardo en bytes , como se ve en el siguiente gráfico
armando la vista :
con lo cual me había surgido el tema de poder hacer una vista en sql server que me mostrara los detalles de los archivos pero que el tamaño pudiera verse en unidades mas "humanas"
buscando en internet encontré esta función: http://myitforum.com/cs2/blogs/jnelson/archive/2008/01/11/111351.aspx
a la cual le corregi el "after por el "Create" y la ejecute , se creo la función sin ningún problema .
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Number2 (John Nelson) - http://number2blog.com
-- Create date: 01-10-2006
-- Modified: 09-04-2008 - Added ZB, YB, BB, GeopBytes and allow larger input numbers
-- Description: Format bytes as largest unit (KB, MB, GB, TB, PB, EB, ZB, YB, BB, Geopbytes)
-- Will take any unit of measurement as input (bytes,
-- KB, MB, GB, TB, PB, EB, ZB, YB, BB, Geopbytes) and converts them first to
-- bytes, then formats that as the largest whole UOM in
-- a human readable format. 1024MB becomes 1.00GB, 0.5GB
-- becomes 512MB, etc.
-- INPUT: @InputNumber - Decimal(38,2)
-- =============================================
Create FUNCTION [dbo].[udf_FormatBytes]
(
@InputNumber DECIMAL(38,7),
@InputUOM VARCHAR(5) = 'Bytes'
)
RETURNS VARCHAR(20)
WITH SCHEMABINDING
AS
BEGIN
-- Declare the return variable here
DECLARE @Output VARCHAR(48)
DECLARE @Prefix MONEY
DECLARE @Suffix VARCHAR(6)
DECLARE @Multiplier DECIMAL(38,2)
DECLARE @Bytes DECIMAL(38,2)
SELECT @Multiplier =
CASE @InputUOM
WHEN 'Bytes' THEN 1
WHEN 'Byte' THEN 1
WHEN 'B' THEN 1
WHEN 'Kilobytes' THEN 1024
WHEN 'Kilobyte' THEN 1024
WHEN 'KB' THEN 1024
WHEN 'Megabytes' THEN 1048576
WHEN 'Megabyte' THEN 1048576
WHEN 'MB' THEN 1048576
WHEN 'Gigabytes' THEN 1073741824
WHEN 'Gigabyte' THEN 1073741824
WHEN 'GB' THEN 1073741824
WHEN 'Terabytes' THEN 1099511627776
WHEN 'Terabyte' THEN 1099511627776
WHEN 'TB' THEN 1099511627776
WHEN 'Petabytes' THEN 1125899906842624
WHEN 'Petabyte' THEN 1125899906842624
WHEN 'PB' THEN 1125899906842624
WHEN 'Exabytes' THEN 1152921504606846976
WHEN 'Exabyte' THEN 1152921504606846976
WHEN 'EB' THEN 1152921504606846976
WHEN 'Zettabytes' THEN 1180591620717411303424
WHEN 'Zettabyte' THEN 1180591620717411303424
WHEN 'ZB' THEN 1180591620717411303424
WHEN 'Yottabytes' THEN 1208925819614629174706176
WHEN 'Yottabyte' THEN 1208925819614629174706176
WHEN 'YB' THEN 1208925819614629174706176
WHEN 'Brontobytes' THEN 1237940039285380274899124224
WHEN 'Brontobyte' THEN 1237940039285380274899124224
WHEN 'BB' THEN 1237940039285380274899124224
WHEN 'Geopbytes' THEN 1267650600228229401496703205376
WHEN 'Geopbyte' THEN 1267650600228229401496703205376
END
SELECT @Bytes = @InputNumber*@Multiplier
SELECT @Prefix =
CASE
WHEN ABS(@Bytes) < 1024 THEN @Bytes --bytes
WHEN ABS(@Bytes) < 1048576 THEN (@Bytes/1024) --kb
WHEN ABS(@Bytes) < 1073741824 THEN (@Bytes/1048576) --mb
WHEN ABS(@Bytes) < 1099511627776 THEN (@Bytes/1073741824) --gb
WHEN ABS(@Bytes) < 1125899906842624 THEN (@Bytes/1099511627776) --tb
WHEN ABS(@Bytes) < 1152921504606846976 THEN (@Bytes/1125899906842624) --pb
WHEN ABS(@Bytes) < 1180591620717411303424 THEN (@Bytes/1152921504606846976) --eb
WHEN ABS(@Bytes) < 1208925819614629174706176 THEN (@Bytes/1180591620717411303424) --zb
WHEN ABS(@Bytes) < 1237940039285380274899124224 THEN (@Bytes/1208925819614629174706176) --yb
WHEN ABS(@Bytes) < 1267650600228229401496703205376 THEN (@Bytes/1237940039285380274899124224) --bb
ELSE (@Bytes/1267650600228229401496703205376) --geopbytes
END,
@Suffix =
CASE
WHEN ABS(@Bytes) < 1024 THEN ' Bytes'
WHEN ABS(@Bytes) < 1048576 THEN ' KB'
WHEN ABS(@Bytes) < 1073741824 THEN ' MB'
WHEN ABS(@Bytes) < 1099511627776 THEN ' GB'
WHEN ABS(@Bytes) < 1125899906842624 THEN ' TB'
WHEN ABS(@Bytes) < 1152921504606846976 THEN ' PB'
WHEN ABS(@Bytes) < 1180591620717411303424 THEN ' EB'
WHEN ABS(@Bytes) < 1208925819614629174706176 THEN ' ZB'
WHEN ABS(@Bytes) < 1237940039285380274899124224 THEN ' YB'
WHEN ABS(@Bytes) < 1267650600228229401496703205376 THEN ' BB'
ELSE ' Geopbytes'
END
-- Return the result of the function
SELECT @Output = CAST(@Prefix AS VARCHAR(39)) + @Suffix
RETURN @Output
END
GO
Luego comprobé el funcionamiento en unas consultas de pruebas
Por ultimo no me quedo mas que modificar la vista que ya tenia creada modificando el campo tamaño para formatear usando la funcion recien creada .
Dando como resultado :
Bueno , espero les sea útil , ya saben , si gusto , compartan la información !:
Saludos .
Adrian Seimandi
Procediminetos almacenados en SQL SERVER - EJEMPLO insert desde vb.net
no voy a explicar como crear un procedimiento almacenado en sql server 2008 r2 .
pero les dejo un ejemplo , para crear la tabla , el procedimineto y para llamarlo desde vb.net
El procedimiento se encargara de hacer un insert , pero ademas nos devolverá un mensaje en caso de que el dato se allá insertado correctamente .
Crear la tabla para el ejemplo :
Crear el procedimiento .
Private Function GuardarNuevaEmision() As Boolean
Try
Dim fecha As String = dtpFechaMuestreo.Value.Year & "/" & dtpFechaMuestreo.Value.Month & "/" & dtpFechaMuestreo.Value.Day
Dim Conexion As New SqlClient.SqlConnection(P_StringConexion)
Dim cmd As New SqlClient.SqlCommand("operador_ins", Conexion)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add(New SqlClient.SqlParameter("@Nro", lblNro.Text.Trim))
cmd.Parameters.Add(New SqlClient.SqlParameter("@Muestra", lblMuestra.Text.Trim))
cmd.Parameters.Add(New SqlClient.SqlParameter("@Estado", "QUIMICO"))
cmd.Parameters.Add(New SqlClient.SqlParameter("@fk_idRecipiente", cmbRecipientes.SelectedValue))
cmd.Parameters.Add(New SqlClient.SqlParameter("@Recipiente", cmbRecipientes.Text.Trim))
cmd.Parameters.Add(New SqlClient.SqlParameter("@Volumen", txtVolumen.Text.Trim))
cmd.Parameters.Add(New SqlClient.SqlParameter("@Origen", txtOrigen.Text.Trim))
cmd.Parameters.Add(New SqlClient.SqlParameter("@Tiempo", txtTiempo.Text.Trim))
cmd.Parameters.Add(New SqlClient.SqlParameter("@VenteoEnCurso", rbEnCursoSI.Checked))
cmd.Parameters.Add(New SqlClient.SqlParameter("@AutorizacionPendiente", rbAutorizadoPendienteSI.Checked))
cmd.Parameters.Add(New SqlClient.SqlParameter("@Enclavado", ""))
cmd.Parameters.Add(New SqlClient.SqlParameter("@Urgente", rbUrgenteSI.Checked))
cmd.Parameters.Add(New SqlClient.SqlParameter("@ResponsableID", P_IdUsuario))
cmd.Parameters.Add(New SqlClient.SqlParameter("@Responsable", lblUsuarioLogeado.Text))
cmd.Parameters.Add(New SqlClient.SqlParameter("@TomaMuestra", txtTomaMuestra.Text.Trim))
cmd.Parameters.Add(New SqlClient.SqlParameter("@RecibeMuestraID", cmbQuimico.SelectedValue))
cmd.Parameters.Add(New SqlClient.SqlParameter("@RecibeMuestra", cmbQuimico.Text.Trim))
cmd.Parameters.Add(New SqlClient.SqlParameter("@EmisionEnCurso", rbEnCursoSI.Checked))
cmd.Parameters.Add(New SqlClient.SqlParameter("@Fecha", fecha + " " + dtpHoraMuestro.Text))
Conexion.Open()
Dim dr As IDataReader = cmd.ExecuteReader
If dr.Read() Then MsgBox(dr.GetString(0))
Conexion.Close()
Return True
Catch ex As Exception
MsgBox(ex.Message)
Return False
End Try
End Function
pero les dejo un ejemplo , para crear la tabla , el procedimineto y para llamarlo desde vb.net
El procedimiento se encargara de hacer un insert , pero ademas nos devolverá un mensaje en caso de que el dato se allá insertado correctamente .
Crear la tabla para el ejemplo :
CREATE TABLE [dbo].[operador](
[idOperador] [int] IDENTITY(1,1) NOT NULL,
[fk_idPlanilla] [int] NOT NULL,
[fk_idRecipiente] [int] NULL,
[Recipiente] [nvarchar](50) NULL,
[Volumen] [decimal](8, 1) NULL,
[Origen] [nvarchar](50) NULL,
[Tiempo] [nvarchar](50) NULL,
[VenteoEnCurso] [bit] NULL,
[AutorizacionPendiente] [bit] NULL,
[Enclavado] [bit] NULL,
[Urgente] [bit] NULL,
[ResponsableID] [int] NULL,
[Responsable] [nvarchar](100) NULL,
[TomaMuestra] [nvarchar](100) NULL,
[RecibeMuestraID] [int] NULL,
[RecibeMuestra] [nvarchar](100) NULL,
[EmisionEnCurso] [bit] NULL,
[Fecha] [datetime] NULL,
[Fecha_ult_mod] [datetime] NULL,
CONSTRAINT [PK_Operador] PRIMARY KEY CLUSTERED
(
[idOperador] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Crear el procedimiento .
CREATE PROCEDURE [dbo].[operador_ins]La funcion en vb.net que realiza el insert:
@Nro int,
@Muestra int,
@Estado nvarchar(50),
--Datos OPERADOR .
@fk_idRecipiente int,
@Recipiente nvarchar(50),
@Volumen decimal(8,1),
@Origen nvarchar(50),
@Tiempo nvarchar(50),
@VenteoEnCurso bit,
@AutorizacionPendiente bit,
@Enclavado bit,
@Urgente bit,
@ResponsableID int,
@Responsable nvarchar(100),
@TomaMuestra nvarchar(100),
@RecibeMuestraID int,
@RecibeMuestra nvarchar(100),
@EmisionEnCurso bit,
@Fecha datetime
AS
BEGIN
SET NOCOUNT ON;
declare @msg AS VARCHAR(100)
Begin Tran Tadd
Begin Try
exec planillas_ins @Nro,@Muestra,@Estado
-- INSERT INTO planillas (Nro ,Muestra , fk_estado ,Fecha_ult_mod )
-- values (@Nro,@Muestra ,'QUIMICO',GETDATE())
-- --SELECT @@IDENTITY;
INSERT INTO operador (
fk_idPlanilla ,
fk_idRecipiente ,
Recipiente,
Volumen ,
Origen ,
Tiempo ,
VenteoEnCurso ,
AutorizacionPendiente ,
Enclavado ,
Urgente ,
ResponsableID ,
Responsable ,
TomaMuestra ,
RecibeMuestraID ,
RecibeMuestra ,
EmisionEnCurso ,
Fecha ,
Fecha_ult_mod )
values (
@@IDENTITY,
@fk_idRecipiente ,
@Recipiente ,
@Volumen ,
@Origen ,
@Tiempo ,
@VenteoEnCurso,
@AutorizacionPendiente ,
@Enclavado ,
@Urgente ,
@ResponsableID ,
@Responsable ,
@TomaMuestra ,
@RecibeMuestraID ,
@RecibeMuestra ,
@EmisionEnCurso ,
@Fecha ,
GETDATE()
)
COMMIT TRAN Tadd
SET @msg = 'Datos Modificados Correctamente.'
End try
Begin Catch
SET @msg = 'Ocurrio un Error: ' + ERROR_MESSAGE() + ' en la línea ' + CONVERT(NVARCHAR(255), ERROR_LINE() ) + '.'
Rollback TRAN Tadd
End Catch
SELECT @msg
END
GO
Private Function GuardarNuevaEmision() As Boolean
Try
Dim fecha As String = dtpFechaMuestreo.Value.Year & "/" & dtpFechaMuestreo.Value.Month & "/" & dtpFechaMuestreo.Value.Day
Dim Conexion As New SqlClient.SqlConnection(P_StringConexion)
Dim cmd As New SqlClient.SqlCommand("operador_ins", Conexion)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add(New SqlClient.SqlParameter("@Nro", lblNro.Text.Trim))
cmd.Parameters.Add(New SqlClient.SqlParameter("@Muestra", lblMuestra.Text.Trim))
cmd.Parameters.Add(New SqlClient.SqlParameter("@Estado", "QUIMICO"))
cmd.Parameters.Add(New SqlClient.SqlParameter("@fk_idRecipiente", cmbRecipientes.SelectedValue))
cmd.Parameters.Add(New SqlClient.SqlParameter("@Recipiente", cmbRecipientes.Text.Trim))
cmd.Parameters.Add(New SqlClient.SqlParameter("@Volumen", txtVolumen.Text.Trim))
cmd.Parameters.Add(New SqlClient.SqlParameter("@Origen", txtOrigen.Text.Trim))
cmd.Parameters.Add(New SqlClient.SqlParameter("@Tiempo", txtTiempo.Text.Trim))
cmd.Parameters.Add(New SqlClient.SqlParameter("@VenteoEnCurso", rbEnCursoSI.Checked))
cmd.Parameters.Add(New SqlClient.SqlParameter("@AutorizacionPendiente", rbAutorizadoPendienteSI.Checked))
cmd.Parameters.Add(New SqlClient.SqlParameter("@Enclavado", ""))
cmd.Parameters.Add(New SqlClient.SqlParameter("@Urgente", rbUrgenteSI.Checked))
cmd.Parameters.Add(New SqlClient.SqlParameter("@ResponsableID", P_IdUsuario))
cmd.Parameters.Add(New SqlClient.SqlParameter("@Responsable", lblUsuarioLogeado.Text))
cmd.Parameters.Add(New SqlClient.SqlParameter("@TomaMuestra", txtTomaMuestra.Text.Trim))
cmd.Parameters.Add(New SqlClient.SqlParameter("@RecibeMuestraID", cmbQuimico.SelectedValue))
cmd.Parameters.Add(New SqlClient.SqlParameter("@RecibeMuestra", cmbQuimico.Text.Trim))
cmd.Parameters.Add(New SqlClient.SqlParameter("@EmisionEnCurso", rbEnCursoSI.Checked))
cmd.Parameters.Add(New SqlClient.SqlParameter("@Fecha", fecha + " " + dtpHoraMuestro.Text))
Conexion.Open()
Dim dr As IDataReader = cmd.ExecuteReader
If dr.Read() Then MsgBox(dr.GetString(0))
Conexion.Close()
Return True
Catch ex As Exception
MsgBox(ex.Message)
Return False
End Try
End Function
Suscribirse a:
Entradas (Atom)