Hej, Lägg istället koden i en modul i en subrutin som heter Main. Hej, Gör som Andreas skrev: Lägg koden i en sub som du kallar Main. Ta bort formuläret. Gör sedan dina två knappar i asp-sidan och låt variabeln komma tillsammans med anropet därifrån. Hejsan och tack till alla ni som varit flitiga att svar på min fråga! Vara bara medveten om att din kod körs på klienten och ansluter med UNC sökvägar till databasen. Vilket innebär att den inte kommer fungera över internet.VB form ska ej synas? [LÖST]
Om jag väljer på form:et Visable=False så syns inte form:et - bra - men tyvärr förstår inte koden att den ska 'köra' vidare utan knapptryckningen. Förklarar lite mer, se nedan.
Lite mer angående koden:
Jag har en VB kod som anropas genom en länk i en asp-sida. VB koden är sparad som en .exe fil.
När jag exekverar/kör VB koden i VB6.0 programmet visas form:en som har två knappar.
När man klickar på någon av knapparna öppnas MS Word och en mall/template med bookmarks med information från en accessdatabas som VB koden kallar på.
Nu när jag änvänder asp-sidan vill jag inte att form:en visar och de två knapparna utan att koden själv ska känna av då jag trycker på knapparna på asp-sidan.
Hoppas ni förstår min fråga.
Tack på förhand!
Johanna PihlströmSv: VB form ska ej synas?
Ta sedan bort formuläret.Sv: VB form ska ej synas?
Se koden nedan så kanske du försår hur koden fungerar. Jag har kopplat Public Sub report till form:ets ena knapp samt den andra till cv-knappen och deras funktioner:
Option Explicit
Public Sub report_Click()
Call Uppdatera(1) 'report.dot
End Sub
Public Sub cv_Click()
Call Uppdatera(2) 'cv.dot
End Sub
Public Sub Uppdatera(ByVal dotVal As Long)
Dim wd As Word.Application 'deklaration av Word
Dim doc As Word.Document 'deklaration av dokument i Word
Dim ran As Range 'deklaration av fältet i Word där texten kommer synas
Dim book As Bookmark 'deklaration av bokmärke i Word där den specifika texten ska stå
Dim strCon As ADODB.Connection 'initierar strCon till en databaskopplingen
Dim strRs As ADODB.Recordset 'initierar strRs till en databas-recordset
Dim strSql As String
Set strCon = New ADODB.Connection 'nu hanteras variabeln strCon som en databas-connection
Set strRs = New ADODB.Recordset 'nu hanteras variabeln strCon som ett databas-recordset
strSql = "SELECT * FROM rapporter" 'byt ut tabell1 mot din tabells namn - detta är sql-satsen som hämtar alla data från din tabell
strCon.Open "Driver={Microsoft Access Driver (*.mdb)};Dbq=\\datornamn\katalog\databasnamn.mdb" 'skriv rätt sökväg till databasen
Set strRs = strCon.Execute(strSql) 'denna rad utför sql-satsen som är lagrad i strSql
On Error Resume Next
Set wd = GetObject(, "Word.Application")
If wd Is Nothing Then
Set wd = CreateObject("Word.Application")
If wd Is Nothing Then
MsgBox ("MS Word is not installed")
End If
End If
'Form1.Visible = False
On Error GoTo 0
Select Case dotVal
Case Is = 1
'vägen till katalogen där reportprofilen finns tillgänglig
Set doc = Documents.Add("\\dataornamn\katalog\report.dot")
Set book = doc.Bookmarks.Item("uppdaterad")
Set ran = book.Range
ran.Text = strRs("Senast uppdaterad")
Grund.Caption = strRs("Senast uppdaterad")
Set book = doc.Bookmarks.Item("namn")
Set ran = book.Range
ran.Text = strRs("Namn")
Grund.Caption = strRs("Namn")
Set book = doc.Bookmarks.Item("alder")
Set ran = book.Range
ran.Text = strRs("Ålder")
Grund.Caption = strRs("Ålder")
Set book = doc.Bookmarks.Item("telefon")
Set ran = book.Range
ran.Text = strRs("Telefon")
Grund.Caption = strRs("Telefon")
Set book = doc.Bookmarks.Item("mail")
Set ran = book.Range
ran.Text = strRs("Mail")
Grund.Caption = strRs("Mail")
Case Is = 2
'vägen till katalogen där cv finns tillgänglig
Set doc = Documents.Add("\\dataornamn\katalog\cv.dot")
Set book = doc.Bookmarks.Item("namn") 'namnet anropas och skrivs in
Set ran = book.Range
ran.Text = strRs("Namn")
ForDagen.Caption = strRs("Namn")
Set book = doc.Bookmarks.Item("alder")
Set ran = book.Range
ran.Text = strRs("Ålder")
ForDagen.Caption = strRs("Ålder")
End Select
wd.Visible = True
doc.Saved = True
End Sub
Hoppas du förstår mitt dilemma.
MVH
JohannaSv: VB form ska ej synas?
Typ
Private Sub Command1_Click()
Shell("Uppdatera.exe " & myVar)
End Sub
Ja, jag gissar att eventet för din knapp säkert inte anropas på det viset i asp, men eftersom jag inte kan asp så gör jag så gott jag kan. :-)
Hoppas det var till någon hjälp.
/EE
EDIT: Parametern du skickar med får du sen naturligtvis fånga i din sub Main. Kommer i ärlighetens namn inte på hur man skriver det just nu, men sök lite här så ska du se att du hittar det, för det har varit uppe ett par gånger tidigare. :-)VB form ska ej synas?
Nu har jag fått det att fungera och VB koden är nu skriven så här:
Option Explicit
Sub Main()
If Command$ = "1" Then
Call Uppdatera(1) 'subrutin för knapp vid val av report
End If
If Command$ = "2" Then
Call Uppdatera(2) 'subrutin för knapp vid val av cv
End If
End Sub
Public Sub Uppdatera(ByVal dotVal As Long) 'subrutin för uppdatering av report/cv
o.s.v. ......
Denna kod har jag sedan sparat som en .exe fil som anropas som en länk från en asp-sida. På denna aspsida finns två knappar som ska vara kopplade till varsin knapp i VB koden. Därmed kommer det skrivas vid knapparna så här:
<input type="submit" name="report" value="report" onClick="remote=window.open ('fakta.exe 1', 'report', 'resize=yes');">
<input type="submit" name="cv" value="cv" onClick="remote=window.open ('fakta.exe 2', 'cv', 'resize=yes');">
Vet inte om det fungerar med knapparna än (om 1 och 2 står på rätt plats), men skriver lite senare ang. detta.
//Johanna "Pihlis" PihlströmSv: VB form ska ej synas?
Du skulle kunna lägga koden från Uppdatera i ASP Sidan. Fast istället för wb.Visible=True Spara filen och redirecte till den. Eller läsa in filen i en ADODB.Stream och retunera den med Response.BinaryWrite.