Toon posts:

[VB6 - SQL SERVER] Wat is de beste Connection methode?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Mede programmeurs,

Ik zit al een tijdje met het volgende :

Een verbinding naar de database kan opgezet worden op de volgende manieren:

1. Formulier niveau
2. Module niveau
3. Class


Op formulier niveau heeft als voordeel dat je WithEvents kunt gebruiken en zodoende T-SQL kunt gebruiken in geval er iets mis gaat met het inserten, deleten of updaten. Wel moet je dan de hele riedel elke keer uitschrijven (of knippen en plakken natuurlijk maar toch heb je dan een hele reeks text staan wat steeds hetzelfde is )

Op module niveau heeft als voordeel dat je slechts 1 keer een functie hoeft te schrijven die verbinding maakt en deze kun je met 1 regel in elke sub op formulier niveau aanspreken.

Op class nivea heeft eigenlijk dezelfde voordelen als op module niveau

Nu hoef je natuurlijk niet altijd een withEvents te gebruiken als je simpelweg data hoeft te lezen zonder daar iets aan te veranderen.

Nu, om transactions te gebruiken kan er natuurlijk ook in je opgeslagen procedure een transaction geschreven worden.

Okee, mijn vraag is dus: Hoe gebruik je een connection het meest effectief/gebruikersvriendelijk..... 8)

  • glashio
  • Registratie: Oktober 2001
  • Laatst online: 25-05 07:46

glashio

C64 > AMIGA > PC

DataClass ?
edit:

MSDN Reference
Klik eerst op Samples om de .zip te downloaden
Zelf paar keer mee gewerkt, t'is een manier.
Ik weet niet ofdat de beste is, ligt ook aan je soort applicatie

[ Voor 95% gewijzigd door glashio op 05-05-2004 15:53 ]

> Google Certified Searcher
> Make users so committed to Google that it would be painful to leave
> C64 Gospel
> [SjoQ] = SjoQing


Verwijderd

Topicstarter
Sorry glashio, daar kan ik niet veel mee, zou je dat kunnen toelichten ;)

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Ik werk op dit moment met een legacy VB 6 project. En ik kan je eignelijk maar 1 tip geven. Zorg ervoor dat je maar 1 methode gebruikt. via module, via form of via class.

Persoonlijk zou ik gaan voor module of class. Dan je makkelijker 1 verbinding gebruiken voor je hele applicatie. En op form niveau wil dat nog wel eens fout gaan.
Verder blijft de code duidelijker, aangezien je minder code in je form hoeft te zetten. Wat een groot voordeel is.

Programmer - an organism that turns coffee into software.


Verwijderd

Topicstarter
LuCarD schreef op 05 mei 2004 @ 15:59:
[...]

Verder blijft de code duidelijker, aangezien je minder code in je form hoeft te zetten. Wat een groot voordeel is.
Klopt zeker maar wat als er nou eens iets mis gaat met het inserten van DATA in één van je tabellen? Met een objConn op formulierniveau kun je, indien je withEvents gebruikt, de hele zaak dan terugdraaien. Of gebruik je dat nooit?


EDIT/// Glacio, thx, zag je edit.... ;) en heb het project ff boven water getoverd...zegt mij op dit moment nog niet zo veel... :+

[ Voor 14% gewijzigd door Verwijderd op 05-05-2004 16:09 ]


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Verwijderd schreef op 05 mei 2004 @ 16:05:
[...]


Klopt zeker maar wat als er nou eens iets mis gaat met het inserten van DATA in één van je tabellen? Met een objConn op formulierniveau kun je, indien je withEvents gebruikt, de hele zaak dan terugdraaien. Of gebruik je dat nooit?
als het fout gaat dan krijg je een error code terug van de class of module. Die word dan verder afgehandeld door het formulier. Bij ons geeft hij dan meestal gewoon een melding. Als de user de oude record terug wil zien dan moet hij het record opnieuw ophalen. Maar dat is gewoon afhankelijk hoe de form de error afhandeld.

Programmer - an organism that turns coffee into software.


  • glashio
  • Registratie: Oktober 2001
  • Laatst online: 25-05 07:46

glashio

C64 > AMIGA > PC

@LuCarD Helemaal mee eens :)

Nog een handige MSDN Resource : Klik
Deze link geeft wat meer uitleg over Data Classes/Sources binnen VB6 ( incl. Example ;) )
edit:

Ook deze is de moeite waard.
Binding , oftwel je DBconnectie verbinden aan een GUI-object ( textbox,selectbox )

[ Voor 33% gewijzigd door glashio op 05-05-2004 16:36 ]

> Google Certified Searcher
> Make users so committed to Google that it would be painful to leave
> C64 Gospel
> [SjoQ] = SjoQing


Verwijderd

Topicstarter
Ook daar heb je wel weer gelijk in.... ;)
Normaal werk ik ook op die manier maar doordat ik nu met een applicatie bezig ben die nogal wat gegevens gaat invoeren/wijzigen dacht ik T-SQL te gaan gebruiken en zodoende RollbackTrans te kunnen gebruiken.

Bedankt voor de examples en ik ga weldra even die artikelen lezen :)

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Verwijderd schreef op 05 mei 2004 @ 16:36:
Ook daar heb je wel weer gelijk in.... ;)
Normaal werk ik ook op die manier maar doordat ik nu met een applicatie bezig ben die nogal wat gegevens gaat invoeren/wijzigen dacht ik T-SQL te gaan gebruiken en zodoende RollbackTrans te kunnen gebruiken.

Bedankt voor de examples en ik ga weldra even die artikelen lezen :)
Dat kan toch nog steeds?
code:
1
2
3
4
5
DataModule.TransAction 1 ' TransAction On
bla
bla
bla
DataModule.TransAction 0 ' TransAction Off


En via de interne handeling van module kan je een rollback doen zodra je een error krijg.

Programmer - an organism that turns coffee into software.


  • glashio
  • Registratie: Oktober 2001
  • Laatst online: 25-05 07:46

glashio

C64 > AMIGA > PC

Heb me studieboek erbij genomen : Database Programming met VB6 in 21 dagen
Echt een aanrader als je er meer in wil verdiepen. Alle methodes staan bescheven en wat er in staat is niet 1-2-3 bij elkaar te google'n.
Klik hier voor een webwinkel die hem aanbied.
Database Programming met VB6 in 21 dagen - ISBN 9039510733
edit:

Thx Man! Wrox + Google = Gevonden :)

Vanuit een class kan je een form.event genereren via een hook-Callback naar een bijv. een hidden picturebox. (zal later code posten hiervoor)

[ Voor 21% gewijzigd door glashio op 05-05-2004 17:07 ]

> Google Certified Searcher
> Make users so committed to Google that it would be painful to leave
> C64 Gospel
> [SjoQ] = SjoQing


Verwijderd

Topicstarter
Glashio, bedankt maar dat boek heb ik hier ook staan. Zeer wazig boek vind ik dat ;) (werkt voornamelijk met gebonden objecten waar ik niet mee werk!) Je zou eens Wrox moeten lezen, véél duidelijker maar goed, daar gaat het hier niet om :+

Waar het wel om gaat is....transactions....ik voel er namelijk nix voor om op elk formulier een connection op te bouwen.

LuCarD, ik heb hier een class file waarin ik een oleDB tot stand breng en direct een recordset als output genereer. Werkt prima maar hoe ik in zo'n class een transaction bouw is mij nog even onduidelijk. Normaliter zoals ik al uitlegde zet je WithEvents in je declaratiesectie en verschijnt de RollbackTrans vanzelf....

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Public Function Query(ByVal QueryString As String) As ADODB.Recordset
  Dim objRs As ADODB.Recordset

  Set Query = Nothing

  If blnConnected Then

    Set objRs= New ADODB.Recordset
    objConn.Open

    With objRs
      Set .ActiveConnection = objConn
      .CursorLocation = adUseClient
      .CursorType = adOpenDynamic 'adOpenStatic
      .LockType = adLockBatchOptimistic
      .Source = QueryString
      .Open
      Set .ActiveConnection = Nothing
    End With

    objConn.Close
    Set Query = objRs
    Set objRs= Nothing
  End If

End Function

[ Voor 6% gewijzigd door Verwijderd op 05-05-2004 17:01 ]

Pagina: 1