crear un informe TXT a partir de una par de tablas

13/04/2004 - 15:44 por antidesco | Informe spam
Hola

puede ser un poco tonta la consulta pero quiero generar un informe en
formato txt,

texto descriptivo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxxxxxx (este varía
según condiciones)
encabezado XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxxxx
descripción
campo1 campo2 campo3
xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx

encabezado XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxxxx
descripción
campo1 campo2 campo3
xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx

encabezado XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxxxx
descripción
campo1 campo2 campo3
xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx

el encabezado es una tabla relacionada de 1 a N a la descripción, esto lo
quiero para formar el cuerpo de un correo automático estoy usando el
XPSMTP.DLL que permite mandar correos SMTP parametrizados (por si alguien le
interesa el tema http://www.sqldev.net/xp/xpsmtp.htm) lo quiero meter en una
DTS en que analice varias variables y mande automáticamente el correo,
supongo que se puede hacer con un activex script, ¿alguien tiene algún
ejemplo de algo así? estoy usando SQL 7.0, desde ya un agradecimiento si me
pueden ayudar.

Preguntas similare

Leer las respuestas

#6 antidesco
13/04/2004 - 21:33 | Informe spam
Hola
bueno como yo soy aun más polémico ;) y tengo un carácter medio tozudo y
generalmente no me quedo con la primera opinión hice un par de
averiguaciones y llegué a al siguiente código de prueba, que realiza lo que
quiero se los adjunto si a alguien le sirve.

Function Main()
dim oFSO
dim x
set oFSO = CreateObject("Scripting.FileSystemObject")
Const ForReading = 1, ForWriting = 2, ForAppending = 8

' habrir el archivo y generar el encabezado
set x = oFSO.OpenTextFile("C:\test.txt", ForWriting, True)
x.Write "Srs. "+chr(13)+chr(10)
x.Write "Se ha recibido del sistema automatico de ingreso de pedidos el
o los pedidos siguientes "+chr(13)+chr(10)
x.Write chr(13)+chr(10)
' habro la base y busco los datos que necesito
set myConn = CreateObject("ADODB.Connection")
set myRecordset = CreateObject("ADODB.Recordset")
dim countr
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3

Const adCmdUnknown = &H0008
Const adCmdText = &H0001
Const adCmdTable = &H0002
Const adCmdStoredProc = &H0004
set mySourceConn = CreateObject("ADODB.Connection")
set mySourceRecordset = CreateObject("ADODB.Recordset")
mySourceConn.Open = "Provider=SQLOLEDB.1;Data SourceÍ-SIPSA; Initial
Catalog=AUTOCOR;user id = 'xx';password='xxx'"

mySQLCmdText = "Select * from test"
mySourceRecordset.Open mySQLCmdText, mySourceConn, adOpenKeyset
If mySourceRecordset.RecordCount < 1 Then
MsgBox " No hay registros"
Main = DTSTaskExecResult_Failure
Else
dim EmpID, TerrID, myDestSQL
set myDestConn CreateObject("ADODB.Connection")
myDestConn.Open = "Provider=SQLOLEDB.1;Data
SourceÍ-SIPSA; Initial Catalog=AUTOCOR;user id = 'xxxx';password='xxxx'"
for countr = 1 to
mySourceRecordset.RecordCount
EmpID mySourceRecordset.Fields("t1").value
TerrID mySourceRecordset.Fields("t2").value
'grabo en el txt un
registro
x.Write " "+
EmpID+" "+ TerrID + chr(13)+chr(10)

mySourceRecordset.MoveNext
Next

end if
x.Close

Main = DTSTaskExecResult_Success

End Function


********************************
ahora bien esto se ejecuta casi en un parpadeo, no creo que sea de alto
requerimiento como para no hacerlo acá , mi idea siempre es dejar lo más
claro posible lo que hago en la base por ende a mi modo de ver este tipo de
cosas debe estar en la DTS y no en algo exógeno como Crystal report, además
es SQL 7 y no tengo Report Services de 2000 como para ocupar esa capacidad,
no se que opinan


"Víctor Rafael Bocanegra Arias" escribió en
el mensaje news:
Mostrar la cita
muy
Mostrar la cita
aplicativo
Mostrar la cita
punto
Mostrar la cita
escribió
Mostrar la cita
#7 Jose Mariano Alvarez \(MUG\)
13/04/2004 - 21:43 | Informe spam
Si pero precisas VS.NET para sacarle provecho a Report Services.

Si lo que quiere hacer son reportes, de esa forma, sugiero que uses cursores
FAST_FORWARD para armar los cortes de control y uses funciones por ejemplo.
(no me maten por la sugerencia de usar cursores). Los cursores son LO PEOR
que puedes usar en el SQL Server y suelen afectarlo muy negativamente pero
son faciles de programar para estos casos. Piensa tambien en hacer lecturas
sucias usando nolock si fuera necesario.

Jose Mariano Alvarez
Comunidad de base de datos
Grupo de Usuarios Microsoft
www.mug.org.ar



"Maximiliano D. A." wrote in message
news:%
Mostrar la cita
#8 Jose Mariano Alvarez \(MUG\)
13/04/2004 - 21:46 | Informe spam
Si puedes ejecutar FSO sin problemas por los antivirus o cosas asi es una
buena alternativa.

Jose Mariano Alvarez
Comunidad de base de datos
Grupo de Usuarios Microsoft
www.mug.org.ar



"antidesco" wrote in message
news:
Mostrar la cita
que
Mostrar la cita
el
Mostrar la cita
adOpenKeyset
Mostrar la cita
de
Mostrar la cita
además
Mostrar la cita
capacidad,
Mostrar la cita
#9 Maximiliano D. A.
13/04/2004 - 21:46 | Informe spam
mmm no estoy para nada de acuerdo, pienso que debes usar RS, yo lo instale y
no vi la necesidad de VS para poderlo usar ni mucho menos!!

Bye


Salu2
Maxi

Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET

MSN:
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Jose Mariano Alvarez (MUG)" <jose.alvarez * *Arroba* * mug.org.ar> escribió
en el mensaje news:
Mostrar la cita
cursores
Mostrar la cita
ejemplo.
Mostrar la cita
lecturas
Mostrar la cita
en
Mostrar la cita
estoy
Mostrar la cita
yo
Mostrar la cita
Report,
Mostrar la cita
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.655 / Virus Database: 420 - Release Date: 08/04/2004
#10 Manuel Etcheto
14/04/2004 - 06:40 | Informe spam
Hola
Si vas a hacerlo por medio de un script, probá esto que
debería ser mucho más eficiente que un bucle
(lo que no entendí es para qué es la segunda connection en
tu código)

Function Main()
Dim conSQL, Rs, strTabla, oFSO, x

set conSQL = CreateObject("ADODB.Connection")
conSQL.Open = "Provider=SQLOLEDB.."

Set Rs = conSQL.execute("SELECT t1, t2 FROM test")
With Rs
If Not .EOF Then
' toma los campos separados por Tab en una variable
strTabla = .GetString(2, , chr(9), chr(13) & chr(10))
End If
.Close
End With

conSQL.Close
Set conSQL = Nothing
Set Rs = Nothing

If not isEmpty(strTabla) Then
Const ForWriting = 2
set oFSO = CreateObject("Scripting.FileSystemObject")
set x = oFSO.OpenTextFile("C:\test.txt", ForWriting, True)
With x
.Write "Srs. "+chr(13)+chr(10)
.Write "Se ha recibido del sistema automatico de ingreso
de pedidos el o los pedidos siguientes"
.Write chr(13) & chr(10) & chr(13) & chr(10)
.Write strTabla
End With
Set oFSO = Nothing
Set x = Nothing
Main = DTSTaskExecResult_Success
Else
MsgBox " No hay registros"
Main = DTSTaskExecResult_Failure
End If

End Function

Suerte
Manuel



Mostrar la cita
medio tozudo y
Mostrar la cita
par de
Mostrar la cita
que realiza lo que
Mostrar la cita
True)
Mostrar la cita
ingreso de pedidos el
Mostrar la cita
("ADODB.Recordset")
Mostrar la cita
SourceÍ-SIPSA; Initial
Mostrar la cita
mySourceConn, adOpenKeyset
Mostrar la cita
registros"
Mostrar la cita
myDestSQL
Mostrar la cita
= "Provider=SQLOLEDB.1;Data
Mostrar la cita
= 'xxxx';password='xxxx'"
Mostrar la cita
EmpID >mySourceRecordset.Fields("t1").value
Mostrar la cita
TerrID >mySourceRecordset.Fields("t2").value
Mostrar la cita
bo en el txt un
Mostrar la cita
x.Write " "+
Mostrar la cita
que sea de alto
Mostrar la cita
es dejar lo más
Mostrar la cita
de ver este tipo de
Mostrar la cita
Crystal report, además
Mostrar la cita
ocupar esa capacidad,
Mostrar la cita
Ads by Google
Search Busqueda sugerida