Ga naar inhoud

VB-probleem


anoniem

Aanbevolen berichten

Welke Visual Basic-programmeur kan mij helpen? Ikzelf ben nog maar een beginneling maar ik heb er plezier in programma's te schrijven, om de computer te laten doen wat ik wil. En dat lukt redelijk. Het was dan ook een uitdaging voor mij toen een neef, die een meubelfabriek heeft mij vroeg of ik geen programma kon schrijven voor zijn personeel in de verschillende toonzalen in den lande. De offertes en de orders moeten nu allemaal steeds op de hand uitgerekend worden. Het is een fabriek die bankstellen, fauteuils, poefs en nog veel meer 'op maat', volgens de wensen van de klant, vervaardigt Omdat het dus geen eenheidspakket is, is het uitrekenen van de prijzen vrij ingewikkeld en regelmatig worden daarbij fouten gemaakt ten voordele van de klant of ook wel ten voordele van de fabriek. De prijzen van alle onderdelen en mogelijkheden zitten in een database waar ik via Visual Basic geen toegang toe heb (Corel Quattro Pro) en dus ben ik begonnen alles over te zetten naar Excel uit het pakket Office 97. Het programma, dat ik gemaakt heb loopt als een trein en is nu practisch foutvrij. Ik heb daar meer dan 3 maanden aan gewerkt (In gecompileerde toestand 692 Kb) Via de 'Package and Deployment Wizard' heb ik een installatieschijf gemaakt en via deze schijf het programma geïnstalleerd op de computer van mijn neef. Het programma werkt prima........totdat ik de gegevens in de database wil bekijken. Dan blokkeert het programma en kunt je er alleen nog uit met ALT-CTRL-DEL. Op mijn PC en ook op mijn Laptop werkt het prima maar op een PC waarop geen Visual Basic is geïnstalleerd werkt het niet. En dat is gek omdat bij de installatie een aantal dll's en andere bestanden worden geïnstalleerd, die volgens mij noodzakelijk zijn om het programma zonder de VB-omgeving te kunnen laten werken. Wie kan mij zeggen waarom het programma de database niet kan benaderen? Een oplossing zou zijn om op alle computers waarop het programma moet draaien VB te installeren maar dat is zeer kostbaar want dat is per computer de prijs van het VB programma. Even een paar gegevens: De gegevens uit Excel worden ingelezen via het besturingselement DATA Daarin zijn de naam van de Database ingevuld (Naam.xls) onder DatabaseName en onder Connect: Excel 8.0; (Het maakt niet uit of ik i.p.v. dat Excel 3.0 , 4.0 of 5.0 invul) De eigenschap RecordSource wordt ingevuld tijdens het programma aangezien er een hondertal verschillende tabbladen zijn De gegevens worden zichtbaar in labels, die verbonden zijn met de verschillende velden in de database door invulling van de eigenschappen DataSource en DataField. In het verleden heb ik meermalen een probleem via deze rubriek opgelost gekregen. Ik hoop, dat dat ook dit keer lukt.
Link naar reactie
Ik neem aan dat je de boel over hebt gezet naar Access, en niet naar Excel. Dat zou niet bepaald een logische keuze zijn. Het installeren van een volledige vb-omgeving om een exe te draaien is natuurlijk totale onzin. De ide is slechts een grafische interface waardoor het eenvoudiger wordt code te schrijven en waardoor een groot deel van de code gegenereerd wordt zodat je niet iedere property e.d. zelf hoeft in te vullen. Het installeren van de vb-runtime en de door jou gebruikte ocx-en en dll's zou in principe genoeg moeten zijn om je applicatie waar dan ook te draaien. Mogelijke valkuilen zijn hardgecodeerde paden en verkeerde error_handling (bijv. on error resume) waardoor je bij foutsituaties in een oneindige loupe terecht kunt komen. Verder is het natuurlijk van belang dat de juiste MDAC-versie (Microsoft Data Access components) op de doel-pc geïnstalleerd staat, maar als het goed is wordt die door de deployment wizard meegenomen. Tip: Door in je error_handling een gedetailleerde logging toe te passen kun je het jezelf een stuk gemakkelijker maken wat het opsporen van fouten betreft.
Link naar reactie
Beste ouwe rot Laurens, Bedankt voor je reactie. Ik heb de boel overgezet naar Excel en niet naar Access. 1. omdat ik geen enkele ervaring heb met Access, wel met dBase van Borland. 2. omdat alle cellen in de database geen werkelijke waarden bevatten maar formules, die gerelateerd zijn aan één enkele cel. Verander je de gegevens in die ene cel (zoals onlangs is gebeurd bij de invoering van de euro) dan veranderen in één klap alle prijzen van alle produkten op alle 100 pagina's. Derhalve leekt het mij geknipt voor een spreadsheetprogramma. Ik weet echt niet of dit ook mogelijk is in Access. Ik denk dus dat Excel wel een logische keuze was. VB6 kan overweg zowel met Access als met Excell. Ik heb slechts 2 error_handlings ingebouwd. In geen van beide heb ik 'on error resume' gebruikt , wel 'on error goto errorhandling en daar: 'resume Verder' zodat een stukje programatuur wordt overgeslagen. Volgens mij kan daar de fout niet in zitten.Ik heb het programma uitgebreid getest en naar mijn mening zitten er geen of nauwelijks fouten in. Het werkte dan ook perfect zowel als bronprogramma als in gecompileerde vorm op beide computers waar VB6 op staat. Maar niet zodra het geïnstalleerd wordt op een andere PC gaat het mis. Wil je je tip iets verduidelijken? Wat bedoel je met een gedetailleerde logging in de error_handling? Ik kan nog steeds niet begrijpen waarom het programma perfect werkt in VB omgeving en daarbuiten niet terwijl toch alle benodigde bestanden zoals dll's e.d. zijn geïnstalleerd. ***************************************************************************** Beste junior Tazzle, Ook jij bedankt voor je bijdrage. Ik begrijp de afkorting 'DUH' niet. Het zal wel een grap zijn want het wordt gevolgd door een lachebekje. Voor de ontwikkeling van het programma het ik VB6 gebruikt. Van ADO weet ik niets af, ik weet dat het bestaat maar ik ben nog maar een beginneling en houd me alleen bezig met eenvoudige hulpmiddelen die in de Toolbox zitten waaronder het besturingselement Data. Voor alle volledigheid laat ik nog even alle gebruikte eigenschappen de revue passeren. Name: dtaDem BOF Action: 0-Move First Caption: Bevat aanwijzing voor gebruik Connect: Excel8.0; DatabaseName: dem2000.xls (dit bestand heb ik in dezelfde directory gezet al waarin het programma draait maar nadat het probleem zich manifesteerde heb ik een andere directory geprobeerd b.v. C: Mijn documentenExceldem2000.xls en daarna een nieuwe installatiedisc gemaakt- zonder resultaat) EOF Action: )-Move Last Exclusive: False Font: MS Sans Serif Bold 14 Height, Left, Top en Width...... Read only: True Recordset Type: 2-Snapshot RecordSource: zie programmatuur hieronder Visible: true Een knop genaamd cmdGoDBase bevat de volgende code als bijvoorbeeld gekozen is voor een bank (Het model dat gevraagd wordt is bijvoorbeeld model Aruba, die staat op het tabblad: Aruba strModel is dan "Aruba$") frmDem.dtaDem.RecordSource = strModel frmDem.dtaDem.Refresh (Het tabblad waar het model Aruba te vinden is bevat 18 stofgroepen (0-17) oplopend in prijs en er zijn diverse velsen: 1-Zits, 2-Zits, 3-Zits enz. Uitvoering in 2 soorten stof is mogelijk. Als gekozen is voor een stof in een bepaalde prijsklasse moet direct naar die stofgroep worden gegaan. Vandaar de volgende programmaregels:) Call WelkeStofGroep(strStofGroep1, strStofGroep2, intStofAantal) intStofGroep = Val(strStofGroep1) frmDem.dtaDem.Recordset.Move (intStofGroep) Weet je nu genoeg? Help me! Hein Overhaus.
Link naar reactie
[quote:b4da89db88]Het programma werkt prima........totdat[/quote:b4da89db88] Dat van dat VB installeren op de andere computers hoeft niet want je zegt zelf dat het programma werkt totdat je de gegevens probeert te benaderen. Als er geen VB runtimes aanwezig waren had het programma helemaal niet gewerkt. Ik ben geen expert op het gebied van Excel wat betreft het benaderen van Excel via VB maar is de versie van Excel wel dezelfde? Ik meen me te herinneren dat ik ooit een dergelijk probleem ben tegengekomen met Access, maar ik kom eigenlijk meer problemen tegen dan me lief is. :lol: _________________ I used to have an open mind but my brains kept falling out. [ Dit Bericht is bewerkt door: DarkScribe op 2002-02-15 11:46 ]
Link naar reactie
Beste meedenkers, Tazzie schreef: Hm, lijkt erop dat de database connectie niet goed is.(DUH!) Waarschijnlijk kan hij de server niet vinden of iets dergelijks. en Darkscribe reageerde met: Ik ben geen expert op het gebied van Excel wat betreft het benaderen van Excel via VB maar is de versie van Excel wel dezelfde? Ik meen me te herinneren dat ik ooit een dergelijk probleem ben tegengekomen met Access, Beide reacties hebben mij aan het denken gezet. Niet, dat ik dat anders nooit doe... Ik krijg het grijze vermoeden, dat zij gelijk hebben. Als je in de eigenschappen van het besturingselement DATA kijkt onder "Connect" dan kun je kiezen uit een aantal databases die via dit besturingselement benaderd kunnen worden. te weten: Access dBaseIII; dBaseIV; dBase 5.0 Excel 3.0; Excel 4.0; Excel 5.0; Excel 8.0 FoxPro 2.0; FoxPro 2.5; FoxPro 2.6; FoxPro 3.0 Lotus WK1; Lotus WK3; Lotus WK4 Paradox 3.x; Paradox 4.x; Paradox 5.x Text Ikzelf schreef: De gegevens uit Excel worden ingelezen via het besturingselement DATA Daarin zijn de naam van de Database ingevuld (Naam.xls) onder DatabaseName en onder Connect: Excel 8.0; (Het maakt niet uit of ik i.p.v. dat Excel 3.0 , 4.0 of 5.0 invul) Ik denk nu echter dat het wél uitmaakt. Althans voor de gecompileerde versie, geïnstalleerd op een computer zonder VB6-omgeving. Ik gebruik Excel uit het Office97 pakket en dat is niet versie 3, 4, 5 of 8. Ik koester nu de vage hoop, dat wanneer ik een van de hier genoemde versies gebruik, het probleem is opgelost. Wat denken jullie van deze gedachtengang? Als jullie het hiermee eens zijn dan zijn er twee mogelijkheden: 1. Mijn versie van VB6 is al enige jaren oud en zal een verjongingskuur moeten ondergaan. Maar ik heb op het Net gekeken bij Microsoft updates maar ik heb geen flauw idee wat ik zou moeten downloaden. Wie uwer wel? of 2. Ik moet overgaan op Excel versie 3.0; 4.0; 5.0; of 8.0. Dan rijst de vraag. Wie zou mij een copie kunnen verschaffen van een van deze versies om te proberen of dit de oplossing is van mijn probleem. Ik woon in Ouderkerk a/d Amstel dus degeen die mij wil helpen moet een beetje in de buurt van Amsterdam wonen. Mijn e-mail-adres is: H.Overhaus@net.HCC.nl Tenslotte nog even antwoorden op de vragen van HvKessel Jr. Ik heb nog niet geprobeerd on VB te installeren op die andere computer. Wel op mijn PC en op mijn laptop. Op beide werkt mijn programma zonder problemen. Ik wil nog even wachten met dit experiment tot eventuele reacties op deze brief binnen zijn. Ik heb inderdaad 100 (zij het heel kleine) werkbladen gemaakt in één werkmap. Ieder produkt van de fabriek staat in zijn eigen werkblad. Dan is het het eenvoudigst te benaderen vanuit mijn programma. Bedankt iedereen, Hein Overhaus.
Link naar reactie
Als op alle pc's dezelfde versie van Excel is geïnstalleerd dan zal het inderdaad niets uit mogen maken, de versie die op jouw computer werkt zal ook op elke willekeurige andere computer moeten werken als daar dezelfde versie van Excel op staat. Ik vind het zo vreemd dat je helemaal niets ziet, ik heb een aantal mogelijkheden bekeken die fouten kunnen geven maar allemaal geven ze foutmeldingen. Is de computer van je neef verbonden met een netwerk? En zo ja, bevindt de database zich op die specifieke computer of ergens anders?
Link naar reactie
Beste rdk Junior, Hoe weet je zo zeker, dat Excel uit Office 97 wel degelijk Excel 8.0 is? Als ik Excel start en onder 'Help' naar 'Info' ga dan staat er Microsoft Excel 97 SR-1 en verder geen enkele aanduiding waaruit ik kan opmaken welke versie het is. Beste DarkScribe Junior, Op alle PC's is dezelfde versie van Excel geïnstalleerd (Zelfs via hetzelfde installatieschijfje) Intussen heb ik het programma op een vierde computer geïnstalleerde waar ik ook dezelfde versie van Excel op heb geïnstalleerd en ook op die computer heb ik hetzelfde probleem. Ook ik vind het uitermate merkwaardig dat ik geen enkele foutmelding krijg. Hij is blijkbaar eindeloos aan het zoeken... waarnaar? Intussen kan ik geen enkele knop gebruiken. niet het kruisje in de rechter bovenhoek noch de Exitknop die ik in het programma heb ingebouwd. De computer van de neef is niet verbonden met een netwerk Overhaus
Link naar reactie
Als je het programma door de Package and Deployment Wizard hebt gehaald, heb je dat programma dan ook al geïnstalleerd op je eigen computer? Ik bedoel dat het dan werkt zonder de Visual Basic omgeving. Doet het programma het dan ook? Wat je kunt doen is om overal waar je denkt dat de code fout gaat, dus bijvoorbeeld in de sub cmdGoDBase_Click, allerlei MsgBox statements te plaatsen. Daarmee kun je zien welke opdracht (regel) uitgevoerd gaat worden, welke variabelen welke waarden hebben, enzovoorts. Tenminste weet je dan precies waar het fout gaat. Misschien komt het programma in een lus waar het niet uitkomt, vaak ligt dat aan een variabele of een error afhandeling. Leef je helemaal uit met die MsgBox dingetjes, ze zijn erg irritant maar kunnen wel inzicht geven in het proces en de exacte plaats waar het programma de fout in gaat.
Link naar reactie
[quote:3943ffb3c7] Op 18-02-2002 19:21, schreef Overhaus: Hoe weet je zo zeker, dat Excel uit Office 97 wel degelijk Excel 8.0 is? Als ik Excel start en onder 'Help' naar 'Info' ga dan staat er Microsoft Excel 97 SR-1 en verder geen enkele aanduiding waaruit ik kan opmaken welke versie het is. [/quote:3943ffb3c7] In de registry kun je de versie van Office achterhalen: HKEY_LOCAL_MACHINESOFTWAREMICROSOFTOFFICEx.x, waarbij x.x voor het versienummer staat. 8.0 is bekend als Office 97, 9.0 is Office 2000
Link naar reactie
Beste meedenkers, De nieuw binnengekomen reacties moet ik eerst nog even bestuderen. Intussen wil ik even terugkomen op het voorstel van hvkessel Junior. Die schreef op 16 feb: "ik wil graag weten of je geprobeerd hebt op die bewuste pc vb6 ook te installeren en dan nog eens gekeken of het niet draait? dan kun je nl. oorzaken gaan wegstrepen en komen we makkelijker bij het probleem?" Ik heb de volgende experimenten uitgevoerd: 1. Het databasebestand (dem2000.xls) staat in dezelfde directory als waar mijn geïnstalleerde programma (de .exe file) in staat. Dit heb ik met moedwil gedaan omdat ik dan in de eigenschap databaseName van het besturingselement DATA geen pad hoef te vermelden maar alleen de naam. Wat ik nu gedaan heb is het volgende: Ik heb de extensie .xls even veranderd in .xlt en daarna het programma gestart op de computer waarop VB6 is geïnstalleerd. Ik krijg nu hetzelfde probleem. Geen errormelding zoals cannot find file of iets dergelijks. Alleen de muisaanwijzer werkt nog en ik kan er alleen maar uit met ALT-CTRL-DEL. 2. Nadat ik de extensie weer veranderd heb in .xls heb ik VisualBasic6 compleet van mijn computer verwijderd. En toen heb ik het programma, dat perfect werkt zolang VB6 op de PC staat, weer gestart. Het resultaat was hetzelfde. Het programma werkt perfect totdat ik de database wil benaderen. Dan valt er een grote stilte die alleen is op te heffen met ALT-CTRL-DEL Volgens mij is uit deze twee experimenten maar één conclusie te trekken: de Office97-versie van Excel is niet compatible met VisualBasic6. Of is er nog een andere conclusie mogelijk? Overhaus.
Link naar reactie
Om te beginnen zou ik altijd het pad meenemen wanneer ik een databasenaam gebruik; zekerheid voor alles. De extensie maakt niet uit, heb ik op mijn computer ook al geprobeerd. Krijg alleen maar een foutmelding, ook als het bestand helemaal niet bestaat. Ik heb zelfs een afbeelding hernoemd en gebruikt als excel database, alles wat ik doe geeft een foutmelding. Zoals ik al eerder zei denk ik dat jouw programma in een ontzettende lus zit. Bekijk de volgende code eens. [code:1:2bfda0351e] Option Explicit Private Sub Form_Load() Dim t As Integer t = 1 Do While t < 2 ; Laat ik hier eens vergeten om t op te hogen Loop End Sub[/code:1:2bfda0351e] Het programma reageert niet maar de muis wel. Met Ctrl-Alt-Del krijg ik het programma wel weer weg, precies zoals ook jij dat omschrijft. Begrijp je nu waarom ik denk aan een lus? Zoals ik al eerder zei, zet bij iedere regel een MsgBox statement neer met daarin alle informatie die je nodig hebt. Dat zijn: 1 Welk statement gaat uitgevoerd worden? 2 Wat is de inhoud van de (alle) variabelen? Je kunt meerdere regels in een MsgBox maken door: [code:1:2bfda0351e]MsgBox "Dit is regel 1" & vbcrlf & "Dit is regel2"[/code:1:2bfda0351e] Variabelen kun je zo invoeren: [code:1:2bfda0351e]MsgBox "DATA1.RecordSource = " & Data1.RecordSource[/code:1:2bfda0351e] Op deze manier kun je er achter komen waar de fout zit, dit werkt eigenlijk een beetje als een soort Debug in de VB Ide. _________________ I used to have an open mind but my brains kept falling out. [ Dit Bericht is bewerkt door: DarkScribe op 2002-02-19 14:09 ]
Link naar reactie
Beste meedenkers, EUREKA!!!!!!! Ik ben er uit. Twee fouten lagen ten grondslag aan mijn probleem. De gouden tip kwam van DarkScribe met zijn idee van MsgBoxStatements. Het bleek toch een eindeloze lus te zijn. Wat was namelijk het geval? ik heb bij ieder produkt van de fabriek een JPG-plaatje. Dat plaatje komt op het scherm gelijk met de gegevens uit de database. Jammer genoeg heb ik van een aantal produkten geen plaatje. Het programma gaf een foutmelding als ik de gegevens van een van deze produkten wilde bekijken (runtime error 53 file not found 'BankPict'modelnaam'.jpg) Slim als ik dacht te zijn bouwde ik een errorhandling in: On error goto Foutmelding. En daar: Resume Verder. Dan werden de regels waarin het plaatje werd opgehaald overgeslagen. Maar ik was niet zo slim om te bedenken, dat als er verder in de code van datzelfde besturingselement een andere fout zou optreden, het programma ook verder ging naar het label Verder: En dat is gebeurd. Vandaar de eindeloze lus. En dus geen foutmelding. Ik schaam mij diep. Tot mijn verdediging kan ik zeggen, dat ik niet gerekend had op een volgende foutmelding. Toen ik de fout, dankzij DarkScribe, ontdekt had en deze foutmelding had uitgeschakeld kwam er wél een foutmelding aan het licht. namelijk: Runtime error 523 The databinding dll : VB5DB.dll could not be loaded Dit bestand van 88Kb zat niet op de PC waar het programma in de fout gaat en wél op mijn eigen PC en op mijn Laptop in de directory ..Windowssystem. Ik heb het bestandje gecopieerd en in de Windowssystem directory gezet en het probleem was opgelost. Maar hoe is het mogelijk, dat het bestandje bij de installatie niet op die andere PC's terecht is gekomen? De Package and Deployment Wizard had deze file toch op die PC's moeten zetten? Maar na enig denken meen ik de oplossing gevonden te hebben. Die had niemand Uwer kunnen bedenken! Degene, die mij een jaar geleden mijn laatste computer geleverd heeft, heeft mijn harde schijf op mijn verzoek in 4 partities verdeeld en....... Windows 98 is geïnstalleerd op de D-schijf!!!!! Op de C:-schijf vind je ook wel een Windows-directory maar daarin zitten geen mappen. Bij het maken van de installatiedisc wordt waarschijnlijk of zeker aangegeven, dat de dll's in D:WindowsSystem moeten worden gezet. En als op de computer waarop je het programma installeert Windows, zoals gebruikelijk is, op de C:-schijf zit dan komen de dll's niet terecht waar ze moeten wezen. Wat ik dus nu moet doen is een nieuwe installatieschijf maken op de computer van mijn neef, die Windows ( en zijn hart) op de juiste plaats heeft en beschikt over een Brander. Nu mijn probleem is opgelost wil ik iedereen hartelijk bedanken voor zijn bijdrage tot de oplossing ervan. Het is hartverwarmend hoe iedereen heeft meegewerkt en meegeleefd. H.Overhaus
Link naar reactie
Is het niet een geweldige bron van inspiratie om alles uit jezelf te halen voor een bedrijf? Mijn eerste kennismaking met C was ook voor een bedrijf, in dit geval een universiteit in Canada, ergens in 1991, waar ik studeerde. Neem van mij aan dat ik daardoor juist veel sneller de taal C leerde dan wanneer ik een gewoon boekje in zou bladeren. Overigens lijkt H.Overhaus serieus genoeg om eerst uitvoerig te testen voordat hij het programma daadwerkelijk loslaat. Ik neem aan dat het bedrijf nu nog gewoon zonder het programma werkt, dus zelfs als het programma uiteindelijk toch niets wordt zal het bedrijf niet hoeven te sluiten en heeft H.Overhaus meer geleerd dan hij/zij kon bevroeden.
Link naar reactie
Beste Ultrasaurus en beste DarkScribe, Ultrasaurus maakt zich zorgen over mijn gebrek aan ervaring op programmeergebied. Ik ben nu 76 jaar en ben al sinds 1984 vertrouwd met programmeren. Ik begon op een Commodore64. Programmeren was mijn hobby. Is het niet geweldig om een computer te laten doen wat jij wilt? Veel leuker dan spelletjes spelen. De computer maakt geen fouten dus als er iets verkeerd gaat heb jij het fout gedaan. Het geeft een kick als je dan je fout ontdekt. Ik begon in primitief Basic maar heb me toentertijd ook begeven op het pad van de machinetaal. Dat werkte veel sneller. Later heb ik geprogrammeerd in QuickBasic en sinds een jaar programmeer ik in VisualBasic. Dus helemaal groen ben ik niet. Ik heb zelfs een prima werkend Bridgescore-uitrekenprogramma gemaakt en dat is niet niks. Zoals DarkScribe opmerkt heb ik het programma uitentreuren getest en nu wordt het nog zeker een maand door diverse medewerkers van de fabriek uitgeprobeerd voordat het operationeel wordt.Dus, Ultrasaurus, je maakt je voor niets zorgen. Ik stel voor, heren, de discussie hierover te sluiten. Mijn probleem is opgelost en daar ging het om. Ik zal heus nog wel een meer een in mijn ogen onoplosbaar probleem tegenkomen en dan kom ik graag bij U terug. Want dit forum is een zegen. H.B.M.Overhaus.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...