torstai 12. joulukuuta 2013
VB.net - ReportViewer: RowNumber Function
Tällä funktiolla voi helposti laskea esim. raportin ryhmän sisältämät rivit.
torstai 28. marraskuuta 2013
VB.net ja sähköpostin lähetys
Sähköpostia voi lähettää monella tavalla, tässä esimerkki kahdesta niistä:
1. SMTP esimerkki: lähettää sähköpostin automaattisesti annetuilla parametreilla.
2. Outlook esimerkki: luo Outlook:iin uuden viestin annetuilla parametreilla (käyttäjä lähettää).
1. SMTP:
Private Sub Send_Smtp(FromEmail As String, ToEmail As String, _
TheAttachements() As String, SubjectEmail As String, _
ContentEmail As String, AttachmntCount As Integer)
'Lähettää sähköpostia parametreissa annettuilla tiedoilla: keneltä, kenelle, liitteet, otsikko,
'sisältö, liitemäärä
'Salaamaton yhteys käytössä:
Dim SmtpClient As New System.Net.Mail.SmtpClient("smtp.XXX.com", YY)
'korvaa XXX oman SMTP serverin nimellä, ja YY portin numerolla
Dim i As Integer = 0
Dim attach As System.Net.Mail.Attachment
Dim myMessage As New System.Net.Mail.MailMessage(FromEmail.ToString, _
ToEmail.ToString, _
SubjectEmail.ToString, _
ContentEmail.ToString)
Try
Do Until i = AttachmntCount
attach = New System.Net.Mail.Attachment(TheAttachements(i).ToString)
myMessage.Attachments.Add(attach)
i = i + 1
Loop
SmtpClient.Send(myMessage)
MsgBox("Sähköposti ja liitetiedosto(t) " & CStr(AttachmntCount) & _
" kpl lähetetty onnistuneesti vastaanottajalle: " & ToEmail & "!")
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
2. Outlook
HUOM. Outlook 2010 tarvii VB.net referencen:
Microsoft.Office.Interop.Outlook versin 12.0.0.0
'Avaa Outlookin, johon luotu uusi viesti liitteineen, käyttäjän painettava Send
If liitteet >= 1 Then
Dim kpl_liitteet As Integer = liitteet
eTo = "XXXXX"
'korvaa XXXXX sähköpostiosoitteella, jolle lähetät
eSubject = "Test"
eBody = "Test content"
oApp = New Outlook.Application()
oMsg = CType(oApp.CreateItem(Outlook.OlItemType.olMailItem), Outlook._MailItem)
oMsg.Subject = eSubject
oMsg.Body = eBody
oMsg.To = eTo
'Dim sBodyLen As Integer = oMsg.Body.Length
oAttachs = oMsg.Attachments
Dim sSource As String
Dim sDisplayName As String
If liitteet = 1 Then
sSource = "w:\Tilausvahvistukset\" & tiedostot(0)
sDisplayName = tiedostot(0)
'oAttach = oAttachs.Add(sSource, _
Outlook.OlAttachmentType.olByValue, _
sBodyLen + 1, _sDisplayName)
oAttach = oAttachs.Add(sSource, , 0 + 1, sDisplayName)
Else
Dim i As Integer = 0
Do Until i = liitteet
sSource = "w:\Tilausvahvistukset\" & tiedostot(i)
sDisplayName = tiedostot(i)
'oAttach = oAttachs.Add(sSource, Outlook.OlAttachmentType.olByValue, _
sBodyLen + 1, sDisplayName)
oAttach = oAttachs.Add(sSource, , i + 1, sDisplayName)
i = i + 1
Loop
End If
' Display
oMsg.Display()
End if
1. SMTP esimerkki: lähettää sähköpostin automaattisesti annetuilla parametreilla.
2. Outlook esimerkki: luo Outlook:iin uuden viestin annetuilla parametreilla (käyttäjä lähettää).
1. SMTP:
Private Sub Send_Smtp(FromEmail As String, ToEmail As String, _
TheAttachements() As String, SubjectEmail As String, _
ContentEmail As String, AttachmntCount As Integer)
'Lähettää sähköpostia parametreissa annettuilla tiedoilla: keneltä, kenelle, liitteet, otsikko,
'sisältö, liitemäärä
'Salaamaton yhteys käytössä:
Dim SmtpClient As New System.Net.Mail.SmtpClient("smtp.XXX.com", YY)
'korvaa XXX oman SMTP serverin nimellä, ja YY portin numerolla
Dim i As Integer = 0
Dim attach As System.Net.Mail.Attachment
Dim myMessage As New System.Net.Mail.MailMessage(FromEmail.ToString, _
ToEmail.ToString, _
SubjectEmail.ToString, _
ContentEmail.ToString)
Try
Do Until i = AttachmntCount
attach = New System.Net.Mail.Attachment(TheAttachements(i).ToString)
myMessage.Attachments.Add(attach)
i = i + 1
Loop
SmtpClient.Send(myMessage)
MsgBox("Sähköposti ja liitetiedosto(t) " & CStr(AttachmntCount) & _
" kpl lähetetty onnistuneesti vastaanottajalle: " & ToEmail & "!")
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
2. Outlook
HUOM. Outlook 2010 tarvii VB.net referencen:
Microsoft.Office.Interop.Outlook versin 12.0.0.0
'Avaa Outlookin, johon luotu uusi viesti liitteineen, käyttäjän painettava Send
If liitteet >= 1 Then
Dim kpl_liitteet As Integer = liitteet
eTo = "XXXXX"
'korvaa XXXXX sähköpostiosoitteella, jolle lähetät
eSubject = "Test"
eBody = "Test content"
oApp = New Outlook.Application()
oMsg = CType(oApp.CreateItem(Outlook.OlItemType.olMailItem), Outlook._MailItem)
oMsg.Subject = eSubject
oMsg.Body = eBody
oMsg.To = eTo
'Dim sBodyLen As Integer = oMsg.Body.Length
oAttachs = oMsg.Attachments
Dim sSource As String
Dim sDisplayName As String
If liitteet = 1 Then
sSource = "w:\Tilausvahvistukset\" & tiedostot(0)
sDisplayName = tiedostot(0)
'oAttach = oAttachs.Add(sSource, _
Outlook.OlAttachmentType.olByValue, _
sBodyLen + 1, _sDisplayName)
oAttach = oAttachs.Add(sSource, , 0 + 1, sDisplayName)
Else
Dim i As Integer = 0
Do Until i = liitteet
sSource = "w:\Tilausvahvistukset\" & tiedostot(i)
sDisplayName = tiedostot(i)
'oAttach = oAttachs.Add(sSource, Outlook.OlAttachmentType.olByValue, _
sBodyLen + 1, sDisplayName)
oAttach = oAttachs.Add(sSource, , i + 1, sDisplayName)
i = i + 1
Loop
End If
' Display
oMsg.Display()
End if
tiistai 5. marraskuuta 2013
tiistai 29. lokakuuta 2013
MS Access ja SQL server versiot
SQL server 2008 ja MS Access 2013 eivät ymmärrä vanhempia Access versiota esim. 2000 ja 1997.
Access 2013 ei osaa edes avata vanhoja tietokantoja. SQL server 2008:n Import- toiminto ei myöskään ymmärrä vanhoja Access tietokantoja.
Jos sinulla on Access 2000 tai aiemmilla versiolla tehty tietokanta, joka on saatava SQL server 2008 tai uudempaan versioon, niin tarviit Access 2010 version konvertointiin. Se osaa vielä konvertoida vanhemmat Access tietokannat 2002_2003.mdb muotoon, jonka ymmärtää myös SQL server 2008 ja Access 2013.
Näin toimii Microsoft tässä tapauksessa :)
Access 2013 ei osaa edes avata vanhoja tietokantoja. SQL server 2008:n Import- toiminto ei myöskään ymmärrä vanhoja Access tietokantoja.
Jos sinulla on Access 2000 tai aiemmilla versiolla tehty tietokanta, joka on saatava SQL server 2008 tai uudempaan versioon, niin tarviit Access 2010 version konvertointiin. Se osaa vielä konvertoida vanhemmat Access tietokannat 2002_2003.mdb muotoon, jonka ymmärtää myös SQL server 2008 ja Access 2013.
Näin toimii Microsoft tässä tapauksessa :)
tiistai 24. syyskuuta 2013
ReportViewer - Datan ryhmittely
Avaa Report Data- paneeli (=View - Report data) ja vedä ryhmittelyyn tarvittava kenttä Row Groups- alueelle tai Column groups- alueelle. Kaksoisklikkausella voi lisätä ryhmälle erilaisia ominaisuuksia..
Jos rymittely luotu Wizard:in avulla, ja muutat sitä, niin jossain tapauksessa ei toimi oikein. Mutta ei myöskään anna virhettä käännettäessä ohjelma!
Jos rymittely luotu Wizard:in avulla, ja muutat sitä, niin jossain tapauksessa ei toimi oikein. Mutta ei myöskään anna virhettä käännettäessä ohjelma!
keskiviikko 4. syyskuuta 2013
Visual Studio 2010 - ReportViewer bugi
Someone wrote in web:
"I'm using Visual studio 2010 and Report Viewer 2010 and I have created report with 4 columns of data with the font size 8pt and in the previewer shows OK. When I previewed the report some columns change automatically the size of the font.
In the expression of the columns has a condition to show or not show data something like this
"I'm using Visual studio 2010 and Report Viewer 2010 and I have created report with 4 columns of data with the font size 8pt and in the previewer shows OK. When I previewed the report some columns change automatically the size of the font.
In the expression of the columns has a condition to show or not show data something like this
=iif(Fields!Bucket1Amount.Value>0,FormatNumber(Fields!Bucket1Amount.Value,2),"")"
Apu tähän:
Muuta fontti ennenkuin lisäät Expression:iin Condition- ehtoja.
tiistai 27. elokuuta 2013
SQL server 2008 - Views
Näkymän (view) voi kopioida tietokannasta (database) toiseen samalle nimelle.
- Valitse view hiiren oikealla, ja avautuvasta valikosta Script view as - Create to: New Query editor window.
- Muuta scriptin USE- lauseeseen kohde database nimi.
- Execute, ja kopio tehtiin.
maanantai 26. elokuuta 2013
VB.net ja ReportViewer
Tämä ominaisuus on mielestäni huonosti dokumentoitu, niin laitanpa sen itsellenikin tänne muistiksi.
Parametrin välittäminen ReportViewer:n SQL-kyselyyn:
1. Lisää "parametri" report.rdlc Report data:aan, ilman arvo (arvo välitetään koodilla myöhemmin).
2. Avaa Dataset ja siellä valitse Tableadapter - Configure:
Lisää SQL- lauseeseen välittävän "parametrin" paikalle ?- merkki.
3. Jos toimit oikein tähän asti, niin Tableadapterissa näkyy nyt: Fill ("parametri")
4. Avaa Tableadapter.Fill("parameter")- ominaisuudet, ja SelectCommand. Ja lisää Parameters (Collection)- kohtaan se parametrin nimi, johon viittasit SQL-lauseessa.
5. Koodissa sitten luot Reportviewerille vastaavan parametrin, ja annat sille arvon:
Esim.
Dim p_lahetenro As New ReportParameter("lahetenro", lahetenro.ToString)
Dim p_otsikko As New ReportParameter("laheteotsikko", laheteotsikko.ToString)
Lahete.Viewer.LocalReport.SetParameters(p_lahetenro)
Lahete.Viewer.LocalReport.SetParameters(p_otsikko)
Lahete.Viewer.RefreshReport()
Lahete.Show()
Kuulostaa monimutkaiselta, mutta ei loppujen lopuksi sitä ole :)
Toinen vaihtoehto antaa parametri ReportViewerille on käyttää Filter ominasuutta, mutta sille löytyy paremmin googlesta vinkkejä!
maanantai 19. elokuuta 2013
Virtual PC - XPmode
Ylläpidän Windows 7:n XPmodessa VB6.0 kehitysympäristöllä tehtyjä ohjelmia.
Tänään asiakkaallani oli verkko-ongelma, joka aiheutti XPmoden käynnistystiedoston katoamisen. Eipä hätää, onhan Järjestelmänpalauttaminen Windowsissa olemassa...
Yllätyksekseni Järjestelmänpalauttaminen ei palauttanut XPmodea koneeseeni. Syykin oli selvä, XPmode:n käynnistyskuvake (=näennäiskone) oli asennettu C:\Users- kansioon, jota ei kuulukaan palauttaa Järjestelmän palauttamisen yhteydessä.
Eipä siinä. Asensin XPmoden ohjelmineen uusiksi...
Tässä paikka, josta kannattaa ottaa varmuuskopio:
C:\Users\"Yourname"\AppData\Local\Microsoft\Windows Virtual PC\Näennäiskoneet\XP mode.vmc
Tänään asiakkaallani oli verkko-ongelma, joka aiheutti XPmoden käynnistystiedoston katoamisen. Eipä hätää, onhan Järjestelmänpalauttaminen Windowsissa olemassa...
Yllätyksekseni Järjestelmänpalauttaminen ei palauttanut XPmodea koneeseeni. Syykin oli selvä, XPmode:n käynnistyskuvake (=näennäiskone) oli asennettu C:\Users- kansioon, jota ei kuulukaan palauttaa Järjestelmän palauttamisen yhteydessä.
Eipä siinä. Asensin XPmoden ohjelmineen uusiksi...
Tässä paikka, josta kannattaa ottaa varmuuskopio:
C:\Users\"Yourname"\AppData\Local\Microsoft\Windows Virtual PC\Näennäiskoneet\XP mode.vmc
maanantai 12. elokuuta 2013
VB.net Kodakimaging
Teen konvertointia VB 6.0 ohjelmasta VB.net:iin. Seuraavaksi olisi urakkana imgedit.ocx ActiveX- komponentin käyttöönotto Windows 7:ssa. Konvertoitava ohjelma käyttää ao. komponenttia kuvan tulostamiseen tiedostosta. Löysin ohje, jonka mukaan yritän ottaa komponentin käyttöön:
Kodakimaging running on windows 7:
http://www.computing.net/answers/windows-7/kodakimaging-running-on-windows-7/6114.html
Ja niinhän siinä sitten kävi, että hylkäsin Kodakimagingin ja korvasin sen VB.net:n integroidulla ominaisuudella: PrintImage.Print()
Lisää tietoa löytyy suoraan googlesta hakemalla.
Lisää tietoa löytyy suoraan googlesta hakemalla.
tiistai 6. elokuuta 2013
Ilmalämpöpumpun GSM-ohjaus mökille
Vapaa-ajan asunnon ilmalämpöpumppua on hyvä pystyä ohjaamaan etänä kotoa käsin. Sain tutustua aiheeseen hankittuamme mökin Pudasjärveltä. Mökissä on Mitsubishin ilmalämpöpumppu. Liitin erilliseen GSM control- yksikköön oman SIM-kortin. Nyt voin lähettää tekstiviestin SIM-kortille, ja GSM control ohjaa infrapunan välityksellä ilmalämpöpumppua. Kyllä tekniikka on kivaa!
torstai 1. elokuuta 2013
Dataseppä perustettu 1.2.2013
Puolivuotis-synttäreiden kunniaksi julkaisen tänään tämän uuden
sivustoni/blogin. Tarkoitus on alkaa bloggaamaan työn kautta oppimiani
asioita. Jos vaikka joku muukin näistä hyötyisi :)
Tällä hetkellä olen lomalla, mutta eiköhän elokuun puolenvälin jälkeen ala ilmestyä ohjelmointivinkkejä yms. tähän blogiin.
Tällä hetkellä olen lomalla, mutta eiköhän elokuun puolenvälin jälkeen ala ilmestyä ohjelmointivinkkejä yms. tähän blogiin.
Tilaa:
Blogitekstit (Atom)