Ahojte,
mám napísaný program, ktorý ide spustiť bez problémov všade, až na windows server 2003 na ktorom má bežať, .NetFramework tam je nainštalovaný
Program sa na pár sekúnd objaví v procesoch a potom odtiaľ zmizne, neukáže žiadnu chybu ani nič...
Ďakujem za rady
Fórum › .NET
Nespusti sa program
Přesnou odpověď nevím, můžu jen popsat, jak bych postupoval já. Zkus prohledat Event Viewer, jestli tam nenajdeš nějakou stopu. Pokud to nepomůže, tak napsat konzolovou aplikaci Hello World a zkusit spustit - když nepoběží, máš možná špatně nainstalovaný .NET. Bacha na to, abys měl nainstalovanou správnou verzi .NET (např. pozor, zda není nainstalovaný jen .NET Client Profile namísto plného .NET Frameworku). Pokud Hello World poběží, doplnit do svého programu logování a logovat chyby při spuštění, pak prostudovat log.
.net tam je nainštalovaný správne, pretože skúšal som iné programy a tie sa spustili, zistil som že sa nedostane ani do form1.designer.vb, pretože tam som si nastavil msgbox ktorý mi nezobrazilo
Dej sem zacatek toho kodu
Hlavne ten soubor s main (Program.vb) a form1.vb
kód nieje dlhý, tu je celý form1.vb, a možno blbá otázka, kde nájdem ten main?
Public Class Form1
Dim oRs As New ADODB.Recordset
Dim SQLQ As String
Dim StrDbAccess As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=G:\...\DtbStats.mdb;Persist Security Info=False"
Dim xProc As String
Dim xLineName As String = Environment.UserName
Dim xWait As Integer = 0
Private Sub FindAndKill()
For Each proc As Process In System.Diagnostics.Process.GetProcesses
If proc.ProcessName = "SPC" Then
If proc.Responding = False Then
xWait += +1 'pocka 50 sekund az potom vypne proces
If xWait = 5 Then
Timer1.Enabled = False
Form2.Label1.Text = "Pravdepodobne došlo k chybe pri zobrazovaní výkresu. SPC musí byť teraz ukončené."
Form2.Text = "Program " & proc.ProcessName & " prestal pracovať"
Form2.ShowDialog() 'vo form2 sa nachadza iba label a button kde je iba me.close
proc.Kill() 'zabije neodpovedajuci proces
xWait = 0
xProc = proc.ProcessName 'ulozi meno neodpovedajuceho procesu pre zapis do dtb
SaveToDtb() 'vola ukladanie do dtb
Timer1.Enabled = True
End If
Else
xWait = 0
End If
ElseIf proc.ProcessName = "SFDC" Then
If proc.Responding = False Then
xWait += +1
If xWait = 5 Then
Timer1.Enabled = False
Form2.Label1.Text = "Došlo k neočakávanej chybe v SFDC, program bude musieť byť reštartovaný!"
Form2.Text = "Program " & proc.ProcessName & " prestal pracovať"
Form2.ShowDialog()
proc.Kill()
xWait = 0
Process.Start("G:\...\SFDC.EXE") 'pokus o opatovne spustenie sfdc
xProc = proc.ProcessName
SaveToDtb()
Timer1.Enabled = True
Else
xWait = 0
End If
End If
Else
If proc.Responding = False Then
xWait += 1
If xWait = 5 Then
Timer1.Enabled = False
Form2.Label1.Text = "Došlo k neočakávanej chybe v " & proc.ProcessName & ", program bude musieť byť ukončený!"
Form2.Text = "Program " & proc.ProcessName & " prestal pracovať"
Form2.ShowDialog()
proc.Kill()
xWait = 0
xProc = proc.ProcessName
SaveToDtb()
Timer1.Enabled = True
End If
End If
End If
Next
End Sub
Private Sub SaveToDtb()
SQLQ = "SELECT * FROM Not_Responding_Stats"
oRs.Open(SQLQ, StrDbAccess, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockOptimistic)
oRs.AddNew()
oRs.Fields("Line").Value = xLineName
oRs.Fields("Program").Value = xProc
oRs.Fields("Date_Time").Value = DateTime.Now
oRs.Update()
oRs.Close()
End Sub
Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
FindAndKill()
End Sub
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
Me.WindowState = FormWindowState.Minimized
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
If MsgBox("Ste si istý, že chcete ukončiť program?", vbQuestion + vbYesNo, "") = vbYes Then
Me.Close()
End If
End Sub
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Timer1.Enabled = True
End Sub
End Class
#6 p3can
tak keďže je ten program taký krátky, tak som začal písať od nuly a po každom kroku som testoval kedy sa prestane spúšťať, problém bol v
Dim StrDbAccess As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=G:\...\DtbStats.mdb;Persist Security Info=False"
tak to môže byť tou cestou ako píšeš, tak moja otázka znie ako to teda vyriešim? v tomto danom programe nepotrebujem tú databázu až tak moc, lebo to je iba taká menšia štatistika len pre mňa, ale robí mi to ešte v druhom programe a v ňom ju potrebujem
Pouze jedna z mozností
DataSource="|DataDirectory|dtbStats.mdb"
tak problém je nakoniec inde, akonáhle deklarujem premennú oRs, čo je prepojenie s databázou tak nespustím program, takže tá cesta s tým nemá nič spoločné
Dim oRs As New ADODB.Recordset
ten OLEDB driver co tam pouzivas je hodne stary stejne tak jako ten recordSet. i na wiki se pise ze uz je to deprecated. doporucuju prejit na nejaky normalni driver kdyz komunikujes s MS databazi nebo coz je podle me nejlepsi se vykaslat na klasickou relacni databazi a implementovat si jednoduchou "dokumentovou databazi" s pomoci JSON.NET. implementace zabere asi tak 3 radky, pokud nemas velky provoz coz rikas ze nemas tak je to podle me super reseni. princip je ten ze budes List<data> serializovat do json a to ulozis do souboru. pak to zase nactes ze souboru a zpetne deserializujes do list<data>.
velky prevoz nemam v tomto programe, ale mam dalsie ktore su zalozene na databaze, takze tam to bude tazsie... tak mi skus poradit nieco v style OLEDB ale novsie,
a inak dik
tak dnes som hladal nahradu za OLEDB a nasiel som ODBC, s nasim MSSQL serverom som to rozchodil bez problemov, ale ked to chcem napojit na nejaku mensiu Access databazu, ako v tomto pripade tak sa neviem pohnut
zasekavam sa v tom ze neviem ako mam dat connection string
Dim con As OdbcConnection = New OdbcConnection("Provider=Microsoft.ACE.OLEDB.12.00;Data Source=G:\...\test.mdb;Persist Security Info=False")
toto mi nasiel google ale dostanem len chybu
Data source name not found and no default driver specified
este s tymto mi niekto skuste pomoct a dam pokoj
v tom cs mas chybu. neni 12.00 ale 12.0
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\p3can\Documents\test_db.accdb;Persist Security Info=False;
skusil bych to jak pro tvuj puvodni kod(OleDB) tak pro pro ODBC.
uz si pripadam ako fakt blbo, dufam ze sa mi to co najskor podari :D ked pouzijem povodny kod, ze nezmenim nic len providera, tak mi to funguje, ale nespustim to na tom servery lebo tam mam ADODB.RECORDSET
cez ODBC mi to funguje len s MSSQL serverom a ACCESS sa mi nedari vobec rozbehnut novym kodom
pridam novy kod
Imports System.Data.Odbc
Public Class Form1
Dim oRS As OdbcConnection
Dim sqlq As String
Dim myReader As OdbcDataReader
Dim cmd As OdbcCommand
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
oRS = New OdbcConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=G:\databases\Production\Access\DtbStats.mdb;Persist Security Info=False")
NacitajCombo()
End Sub
Private Sub NacitajCombo()
sqlq = "SELECT * FROM Not_Responding_Stats"
cmd = New OdbcCommand(sqlq, oRS)
//pri ors.open sa mi to zasekne s chybou DATASOURCE NAME NOT FOUND AND NO DEFAULT DRIVER SPECIFIED
oRS.Open()
myReader = cmd.ExecuteReader()
If myReader.HasRows Then
Do While myReader.Read
combo.Items.Add(myReader.Item("user"))
Loop
Else
MsgBox("Ziadny zaznam")
End If
oRS.Close()
myReader.Close()
End Sub
End Class
pri ors.open sa mi to zasekne s chybou DATASOURCE NAME NOT FOUND AND NO DEFAULT DRIVER SPECIFIED
dobre uzatvaram to konecne s tymto
oRS = New OdbcConnection("Driver={Microsoft Access Driver (*.mdb)};Dbq=G:\...\DtbStats.mdb;Uid=Admin;Pwd=;")
zatial to vyzera ze to pojde
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Nespustí se JAR soubor — založil David Klouček
Java ME, EclipseME, nespustí se emulace — založil jadus
Program, ktory otvori iny program — založil Nummi
C# program — založil Tomas.P
Moderátoři diskuze