Springen naar inhoud


- - - - -
Solved

Foto uit EID vanuit Access bewaren in bestand

eID Access

  • Log in a.u.b. om te beantwoorden
Er zijn 9 reacties in dit onderwerp

#1 BESLO

BESLO

    Teacher

  • Teachers
  • PipPipPip
  • 187 berichten
    Laatst bezocht gisteren, 15:41
  • LocatieMelsele

Geplaatst op 11 March 2011 - 16:20


Ik schrijf momenteel een applicatie voor het beheren van de patienten van mijn vrouw.
Hierbij ga ik ook de gegevens uit de EID (en indien mogelijk, uit de SIS kaart) uitlezen en in de juiste velden op mijn formulier plaatsen (en dus daarna ook in de database).

Het uitlezen van de EID gaat zonder enig probleem. Maar ik zou ook graag de foto, die op die EID staat, uitlezen, in een image control plaatsen en bij het bewaren van mijn record deze foto naar een bestand wegschrijven (ik wil de foto niet in een tabel plaatsen omdat ik overal lees dat externe image bestanden efficienter is).

Op het web kan ik wel code vinden om afbeeldingen naar de database te sturen (wat bij een bound-control geen probleem zou mogen zijn) maar nergens vind ik code om de inhoud van een picturebox weg te schrijven naar een extern bestand.

Iemand enig idee waar ik wel bruikbare kan vinden?


Ik werk met MS-access 2007 (op PC van mijn vrouw) en 2010 (op mijn PC).


Alvast bedankt
Doe nooit aan een ander wat u niet zelf wil overkomen (Confucius)

#2 Thanatos

Thanatos

    CVU Certified Vbib User

  • Leden
  • PipPipPipPipPipPipPip
  • 1799 berichten
    Laatst bezocht 15 Apr 2014 15:07

Geplaatst op 13 March 2011 - 06:04

Ik heb hier vorig jaar ergens mee zitten prutesen, welliswaar in Java.
Hier vind je anders wel veel informatie over programmeren met de eid.
https://securehomes....ingExamples0014
Je kan zien dat het van de KUL is, en dat je verschillende interessante pagina's ziet, misschien vind je daar iets.

#3 RedThread

RedThread

    Beheerder VBIB

  • Beheerder
  • 3434 berichten
    Laatst bezocht 30 Jul 2014 10:06
  • LocatieTongeren,Belgium.
Inzender

Geplaatst op 13 March 2011 - 20:37

Misschien ook interessant om je volledige code te posten hoe je info uit je eID kunt halen ?

Uiteraard niet verplicht maar ik denk dat andere leden dat ook wel zouden appreciëren.

Greetzzz

*** If you like youre solution or appriciate the crew's effort, please click on the facebook like or the Google +1 button ***

 

- Any fool can know, the point is to understand -


email : RedThread@vbib.be | MSN : Red_Thread@Hotmail.com

Huisregels - Tutorials - VS 2013 Express - Keybinding Posters - Code Tags gebruiken - LessThenDot - MSDN


#4 pluto

pluto

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 577 berichten
    Laatst bezocht gisteren, 22:52

Geplaatst op 13 March 2011 - 22:38

dat is zeker we kunnen niet genoeg weten. Zo wachten we ook nog altijd naar het vervolg van Swets i.v.m Printerpoort.

groetjes

#5 BESLO

BESLO

    Teacher

  • Teachers
  • PipPipPip
  • 187 berichten
    Laatst bezocht gisteren, 15:41
  • LocatieMelsele

Geplaatst op 16 March 2011 - 08:47

Nu pas tijd gehad om de code uit mijn database te halen.

Visual Basic Code:
Private Sub cmdEID_Click()
   Dim EIDlib1		   As New EIDLIBCTRLLib.EIDlib
   Dim lhandle		   As Long
   Dim RetStatus		 As New EIDLIBCTRLLib.RetStatus
   Dim MapColPicture	 As New EIDLIBCTRLLib.MapCollection
   Dim MapColID		  As New EIDLIBCTRLLib.MapCollection
   Dim MapColAddress	 As New EIDLIBCTRLLib.MapCollection
   Dim CertifCheck	   As New EIDLIBCTRLLib.CertifCheck
   Dim strName		   As String
   Dim strFirstName1	 As String
   Dim strBirthPlace	 As String
   Dim strBirthDate	  As String
   Dim strGender		 As String
   Dim strNationality	As String
   Dim strNationalNumber As String
   Dim strStreet		 As String
   Dim strZipCode		As String
   Dim strMunicipality   As String
   Dim Pasfoto_Temp	  As Variant
 
   DoCmd.Hourglass True
   
   Set RetStatus = EIDlib1.Init("", 0, 0, lhandle)
   Set RetStatus = EIDlib1.GetID(MapColID, CertifCheck)
 
   strName = MapColID.GetValue("Name")
   strFirstName1 = MapColID.GetValue("FirstName1")
   strBirthDate = MapColID.GetValue("BirthDate")
   strGender = MapColID.GetValue("Gender")
   strNationalNumber = MapColID.GetValue("NationalNumber")
 
   Set RetStatus = EIDlib1.GetAddress(MapColAddress, CertifCheck)
 
   strStreet = MapColAddress.GetValue("Street")
   strZipCode = MapColAddress.GetValue("ZIPCode")
   strMunicipality = MapColAddress.GetValue("Municipality")

   Set RetStatus = EIDlib1.Exit
   If Me.NewRecord Then
	  Me.Naam = strName
	  Me.Voornaam = strFirstName1
	  Me.Adres = strStreet
	  Me.Woonplaats = GetZipCodeRecNo(strZipCode, strMunicipality)
	  Me.Woonplaats.Requery
	  Me.Geslacht = strGender
	  Me.Geboortedatum = CreateDate(strBirthDate)
	  Me.NationaalNummer = strNationalNumber
	  Me.Telefoon.SetFocus
   Else  ' Update record information with new info from eID
	  If Me.NationaalNummer = strNationalNumber Then
		 Me.Naam = strnaam
		 Me.Voornaam = strvoornaam
		 Me.Adres = strStreet
		 Me.Woonplaats = GetZipCodeRecNo(strZipCode, strMunicipality)
		 Me.Woonplaats.Requery
		 Me.Geslacht = strGender
		 Me.Geboortedatum = CreateDate(strBirthDate)
	  Else
		 If Me.Naam = strName And Me.Voornaam = strFirstName1 Then
			Me.Adres = strStreet
			Me.Woonplaats = GetZipCodeRecNo(strZipCode, strMunicipality)
			Me.Woonplaats.Requery
			Me.Geslacht = strGender
			Me.NationaalNummer = strNationalNumber
			Me.Geboortedatum = CreateDate(strBirthDate)
		 Else
		 DoCmd.Hourglass False
			If strName = "" Then
			   MsgBox "Geen eID kaart in lezer!" & _
					   vbCrLf & "Plaats de eID van de patient in de lezer.", vbCritical, "FOUT"
			Else
			   MsgBox "De patientenfiche en de eID kaart komen niet overeen!" & _
					   vbCrLf & "Zoek de juiste fiche die bij deze kaart hoort of maak een nieuwe fiche.", vbCritical, "FOUT"
			End If
		 End If
	  End If
   End If
   DoCmd.Hourglass False
End Sub



Met deze code kan ik perfect mijn EID inlezen (had ik lang geleden ergens op het web gevonden, maar weet niet meer waar. De link van RedThread lijkt wel ongeveer dezelfde code te geven).

Wel moet je natuurlijk de middleware van het web halen en installeren.
http://eid.belgium.be/nl/
Sinds kort werkt dit ook op Windows 7 64-bit (inclusief het uitlezen van de SIS kaart, die code heb ik echter nog niet geschreven).

Ondertussen heb ik ook kans gezien om even vlug de code te testen die ik via de link van RedThread gevonden heb (op die pagina staat onderaan een link naar een excel bestand waar goeie code in staat).

Ook dat werkt heel goed! Nu alleen nog verfijnen (o.a. wegschrijven naar een specifieke "applicatie image" folder).
Doe nooit aan een ander wat u niet zelf wil overkomen (Confucius)

#6 RedThread

RedThread

    Beheerder VBIB

  • Beheerder
  • 3434 berichten
    Laatst bezocht 30 Jul 2014 10:06
  • LocatieTongeren,Belgium.
Inzender

Geplaatst op 16 March 2011 - 10:15

thx  :?   :?

*** If you like youre solution or appriciate the crew's effort, please click on the facebook like or the Google +1 button ***

 

- Any fool can know, the point is to understand -


email : RedThread@vbib.be | MSN : Red_Thread@Hotmail.com

Huisregels - Tutorials - VS 2013 Express - Keybinding Posters - Code Tags gebruiken - LessThenDot - MSDN


#7 BESLO

BESLO

    Teacher

  • Teachers
  • PipPipPip
  • 187 berichten
    Laatst bezocht gisteren, 15:41
  • LocatieMelsele

Geplaatst op 16 March 2011 - 12:09

Ik zal later deze week de opgekuiste code nog plaatsen (inclusief alles wat met de foto te maken heeft) zodat daarna dit topic gesloten kan worden.

Nog eens bedankt RedThread!
Doe nooit aan een ander wat u niet zelf wil overkomen (Confucius)

#8 BESLO

BESLO

    Teacher

  • Teachers
  • PipPipPip
  • 187 berichten
    Laatst bezocht gisteren, 15:41
  • LocatieMelsele

Geplaatst op 18 March 2011 - 13:03

Zoals beloofd hier de volledige code.
Eerst de code om een afbeelding te bewaren
Visual Basic Code:
Option Compare Database

'---------------------------------------------------------------------------------------
' Module	: z_Convert_byte
' Author	: Charlizenne ... and some websites with necessary info
' Date	  : 19/06/2010
' Purpose   : Convert a picture in the byte format in a format to be able to save
'---------------------------------------------------------------------------------------

Type GUID
  Data1 As Long
  Data2 As Integer
  Data3 As Integer
  Data4(7) As Byte
End Type

Declare Function CreateStreamOnHGlobal Lib "ole32.dll" (ByRef hGlobal As Any, _
														ByVal fDeleteonresume As Long, _
														ByRef ppstr As Any) As Long
Declare Function OleLoadPicture Lib "olepro32.dll" (ByVal lpStream As IUnknown, _
													ByVal lSize As Long, _
													ByVal fRunMode As Long, _
													ByRef riid As GUID, _
													ByRef lplpObj As Any) As Long
Private Declare Function CLSIDFromString Lib "ole32.dll" (ByVal lpsz As Long, ByRef pclsid As GUID) As Long

Private Const SIPICTURE As String = "{7BF80980-BF32-101A-8BBB-00AA00300CAB}"

' convert a byte array containing a resource to IPicture
'---------------------------------------------------------------------------------------
' Procedure : PictureFromRes
' Author	: Charlizenne ... and some websites with necessary info
' Date	  : 19/06/2010
' Purpose   : the actual function to do the conversion
'---------------------------------------------------------------------------------------
'
Public Function PictureFromRes(ByRef b() As Byte) As IPicture
  On Error GoTo errorhandler
  
  Dim istrm As IUnknown
  Dim tGuid As GUID
  
  If Not CreateStreamOnHGlobal(b(LBound(:?), False, istrm) Then
	CLSIDFromString StrPtr(SIPICTURE), tGuid
	OleLoadPicture istrm, UBound(:? - LBound(;) + 1, False, tGuid, PictureFromRes
  End If
  
  Set istrm = Nothing
  Exit Function
errorhandler:
  Debug.Print "Could not convert to IPicture!"
End Function


Dan de code om de eID te lezen en de gegevens naar een tabel te sturen (via bound controls op mijn form).

Visual Basic Code:
Private Sub cmdEID_Click()
   Dim EIDlib1			  As New EIDLIBCTRLLib.EIDlib
   Dim lhandle			  As Long
   Dim RetStatus			As New EIDLIBCTRLLib.RetStatus
   Dim MapColPicture		As New EIDLIBCTRLLib.MapCollection
   Dim MapColID			 As New EIDLIBCTRLLib.MapCollection
   Dim MapColAddress		As New EIDLIBCTRLLib.MapCollection
   Dim CertifCheck		  As New EIDLIBCTRLLib.CertifCheck
   Dim strName			  As String
   Dim strFirstName1		As String
   Dim strBirthPlace		As String
   Dim strBirthDate		 As String
   Dim strGender			As String
   Dim strNationality	   As String
   Dim strNationalNumber	As String
   Dim strStreet			As String
   Dim strZipCode		   As String
   Dim strMunicipality	  As String
   Dim strFileName		  As String
   Dim strEIDStartValidDate As String
   Dim strEIDEndValidDate   As String
   
   Dim Pasfoto_Temp() As Byte
   
  ' Omdat het uitlezen wel even durut zet ik de cursor even op de zandloper.
  ' Ik denk er over om een mogelijkheid te zoeken om hier een progressbar in de plaats te zetten.
   DoCmd.Hourglass True
   
   Set RetStatus = EIDlib1.Init("", 0, 0, lhandle)
   Set RetStatus = EIDlib1.GetID(MapColID, CertifCheck)
 
   strName = MapColID.GetValue("Name")
   strFirstName1 = MapColID.GetValue("FirstName1")
   strBirthDate = MapColID.GetValue("BirthDate")
   strGender = MapColID.GetValue("Gender")
   strNationalNumber = MapColID.GetValue("NationalNumber")
   strEIDStartValidDate = MapColID.GetValue("BeginValidityDate")
   strEIDEndValidDate = MapColID.GetValue("EndValidityDate")
   
   Set RetStatus = EIDlib1.GetAddress(MapColAddress, CertifCheck)
 
   strStreet = MapColAddress.GetValue("Street")
   strZipCode = MapColAddress.GetValue("ZIPCode")
   strMunicipality = MapColAddress.GetValue("Municipality")

   'Haal eID foto op
   Set RetStatus = EIDlib1.GetPicture(MapColPicture, CertifCheck)
   Pasfoto_Temp = MapColPicture.GetValue("Picture")
   'Schrijf eID foto weg naar een bestand
   FileName = GetPath & "\Images\eID\" & strNationalNumber & ".jpg"
   SavePicture PictureFromRes(Pasfoto_Temp), FileName
   'Laad bestand in image control
   imgPhoto.Picture = FileName
 
   Set RetStatus = EIDlib1.Exit
   If Me.NewRecord Then
	  Me.Naam = strName
	  Me.Voornaam = strFirstName1
	  Me.Adres = strStreet
	  Me.Woonplaats = GetZipCodeRecNo(strZipCode, strMunicipality)
	  Me.Woonplaats.Requery
	  Me.Geslacht = strGender
	  Me.Geboortedatum = CreaDate(strBirthDate)
	  Me.NationaalNummer = strNationalNumber
	  Me.EidGeldigheid = CreaDate(strEIDEndValidDate)
	  Me.CreateDate = CreaDate(strEIDStartValidDate)
	  Me.Telefoon.SetFocus
   Else  ' Update record information with new info from eID
	  If Me.NationaalNummer = strNationalNumber Then
		 Me.Naam = strName
		 Me.Voornaam = strFirstName1
		 Me.Adres = strStreet
		 Me.Woonplaats = GetZipCodeRecNo(strZipCode, strMunicipality)
		 Me.Woonplaats.Requery
		 Me.Geslacht = strGender
		 Me.Geboortedatum = CreaDate(strBirthDate)
		 Me.EidGeldigheid = CreaDate(strEIDEndValidDate)
		 Me.CreateDate = CreaDate(strEIDStartValidDate)
	  Else
		 If Me.Naam = strName And Me.Voornaam = strFirstName1 Then
			Me.Adres = strStreet
			Me.Woonplaats = GetZipCodeRecNo(strZipCode, strMunicipality)
			Me.Woonplaats.Requery
			Me.Geslacht = strGender
			Me.NationaalNummer = strNationalNumber
			Me.Geboortedatum = CreaDate(strBirthDate)
			Me.EidGeldigheid = CreaDate(strEIDEndValidDate)
			Me.CreateDate = CreaDate(strEIDStartValidDate)
		 Else
		 DoCmd.Hourglass False
			If strName = "" Then
			   MsgBox "Geen eID kaart in lezer!" & _
					   vbCrLf & "Plaats de eID van de patient in de lezer.", vbCritical, "FOUT"
			Else
			   MsgBox "De patientenfiche en de eID kaart komen niet overeen!" & _
					   vbCrLf & "Zoek de juiste fiche die bij deze kaart hoort of maak een nieuwe fiche.", vbCritical, "FOUT"
			End If
		 End If
	  End If
   End If
   DoCmd.Hourglass False
End Sub



Omdat ik mijn bestanden op een specifieke locatie wil hebben (vertrekkende van de locatie van mijn db) heb ik ook nog die kleine routinetje nodig
Visual Basic Code:
Function GetPath()
   'Returns the path to currently opened MDB or ADP
   GetPath = CurrentProject.Path
End Function


Deze topic kan op "Solved" gezet worden.
Zo nu nog hopen dat men de interne veldnamen van de SIS kaart vrijgeeft zodat ik ook die gegevens kan uitlezen. Blijkbaar is deze info nog niet publiek beschikbaar maar enkel aan een aantal ontwikkelaars gegeven  :?
Doe nooit aan een ander wat u niet zelf wil overkomen (Confucius)

#9 Chris d

Chris d

    Starting Developer

  • Leden
  • 2 berichten
    Laatst bezocht 04 Apr 2013 20:10

Geplaatst op 07 March 2013 - 22:01

Leuk stukje vb!
Ben nieuw op dit forum en zie niet onmiddellijk hoe getoonde code eenvoudig te downloaden...

#10 RedThread

RedThread

    Beheerder VBIB

  • Beheerder
  • 3434 berichten
    Laatst bezocht 30 Jul 2014 10:06
  • LocatieTongeren,Belgium.
Inzender

Geplaatst op 08 March 2013 - 00:25

Bericht bekijkenChris d, op 07 March 2013 - 22:01, zei:

Ben nieuw op dit forum en zie niet onmiddellijk hoe getoonde code eenvoudig te downloaden...

Dag chris, welkom !

boven de code staat een linkje "copy to clipboard"
klik daarop en ga vervolgens naar visual studio.
daar gewoon in je form plakken (of CTRL-V)

Greeetzzz

*** If you like youre solution or appriciate the crew's effort, please click on the facebook like or the Google +1 button ***

 

- Any fool can know, the point is to understand -


email : RedThread@vbib.be | MSN : Red_Thread@Hotmail.com

Huisregels - Tutorials - VS 2013 Express - Keybinding Posters - Code Tags gebruiken - LessThenDot - MSDN






Ook met taq Solved, eID, Access voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


[Solved] Untitled 1

Hosting provided by Combell
Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
vbib.be - vbnet.be - vbdotnet.be - visualbasic.be