En ocasiones se necesita borrar datos de una tabla que estan “ligados” a otra, sin embargo dichos campos no necesariamente son llaves, por consecuencia el borrado es un poco mas complejo.

Encontré una manera mediante Triggers de hacer un borrado de datos de otras tablas cuando borras un dato de una tabla principal.

Les dejo el código

CREATE TRIGGER triggerdemo
ON dbo.bloque11
AFTER DELETE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @folio INTEGER
SELECT @folio=FOLIO FROM deleted
DELETE FROM bloque22
WHERE bloque22.Folio =@folio
END
GO

Espero les sea de utilidad

saludos

Hoy intentando encontrar donde se ocupaban ciertas tablas dentro de un universo de Stored Procedures de SQL, me di a la tarea de buscar una manera de encontrarlas mas rápidamente, y dentro del mismo proyecto venian algunas consultas y una en particular me llamó mucho la atención y que me dió la idea de cambiar ciertos datos y obtener lo que buscaba.

Les dejo el código

SELECT *
FROM sysobjects SO
JOIN syscomments SC
ON SO.id = SC.id
WHERE SC.text LIKE ‘%’ + ‘textoabuscar’+ ‘%’

Con esto obtienen una lista de todos los Stored Procedures, Funciones y demás donde se haga referencia a lo que estan buscando

espero sea de utilidad

saludos

Algunas veces es necesario bajar archivos almacenados en la carpeta Document de SalesForce, como alguno de ustedes saben, estos archivos son codificados a base64, después de investigar un rato veo que la manera mas fácil de hacerlo es la siguiente:

Dim qdoc As sforce.QueryResult
Dim document As sforce.Document
qdoc = sfdc.query(String.Format(“Select d.Body, d.BodyLength, d.Id, d.Name from Document d where id = ‘01530000000nu6K’ “))
Dim records() As sforce.sObject = qdoc.records
document = CType(records(0), sforce.Document)

Try
Dim file As FileStream = New FileStream(“d:\\temp\\test.txt”, FileMode.Create)
Dim sw As BinaryWriter = New BinaryWriter(file)
sw.Write(document.Body)
sw.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try

espero les sea de utilidad

En ocasiones se necesita copiar datos entre datatables, aqui pongo una manera facil de poder hacer estas operaciones.

Primero se declaran 2 datatables, el primero obtendra los resultados de un query, y por consecuencia tendra un numero determinado de columnas, se pone un ciclo para copiar el numero de columnas al 2do datatable y posteriormente se hace el copiado de datarows entre ambos

Dim DataTableLeer As New DataTable
Dim DataTableLeer2 As New DataTable
Dim selectcmd As New SqlClient.SqlDataAdapter

Dim conn As New SqlClient.SqlConnection(String.Format(“Data Source='{0}’;Initial Catalog='{1}’;User Id= ‘{2}’;Password ='{3}’;”, server, database, username, password))

conn.Open()
DataTableLeer.Clear()

selectcmd = New SqlClient.SqlDataAdapter(String.Format(“Select * from tabla “), conn)
selectcmd.Fill(DataTableLeer)

For i As Integer = 0 To DataTableLeer.Columns.Count – 1
DataTableLeer2.Columns.Add(DataTableLeer.Columns(i).ColumnName)
Next

DataTableLeer2.Rows.Add(DataTableLeer.Rows(0).ItemArray)

espero sea de utilidad

saludos

En algunas ocasiones es necesario mandar un correo electronico desde tu aplicacion, esto de manera automatica y en ocasiones sin que te avise.. aqui les escribo una manera rapida de hacerlo para una cuenta de correo de GMAIL

Public Sub sendmail()
Dim Mensaje As New System.Net.Mail.MailMessage()
Dim Servidor As New System.Net.Mail.SmtpClient

Servidor.Credentials = New System.Net.NetworkCredential(“correofuente@gmail.com”, “contraseniadegmail”)
Servidor.Host = “smtp.gmail.com”
Servidor.Port = 587
Servidor.EnableSsl = True
Continue reading

Como alguno saben y otros apenas se enteran(como es mi caso), en un datatable de VB .NET se pueden guardar distintos tipos de datos e inclusive Objetos, sin embargo, antes de agregar valores hay que declarar primero que tipo de valor se guardará para dicha columna, ya que en caso de no hacerlo por defecto se guardan como tipo String.

Para asignar un tipo de dato a una columna de un DataTable solamente hay que hacer lo siguiente

Continue reading

A veces es útil tener una bitácora (log) de lo que va haciendo el programa que vamos desarrollando, sin necesidad de estar depurando o haciendo un paso a paso, simplemente dejar que el programa se ejecute y al final revisar los “errores” o los procesos que terminó satisfactoriamente, aquí pongo una función que permite llevar eso, y que pues resulta útil al finalContinue reading