23. november 2003 - 00:42Der er
12 kommentarer og 1 løsning
melding om dobbeltposter
Jeg bruger et program der ovf data fra access til word via vba-kode. I øjeblikket gøres det via kundenr, som der ikke findes to ens af. Nu vil jeg lave programmet om så kunden skal findes via tlf.-nr, som der godt kan være flere ens af. Kan dette opfanges (altså at det indtastede tlf.nr peger på flere kundernr.) og er det muligt at vælge hvilken kunde man ønsker at få overført.
Ved ikke noget om databaser, men du kan tjekke om et telefonnummer allerede findes.
Nu ved jeg ikke hvordan du smider data fra access til Word - bruger du vba i word eller i access, bruger du sql, bruger du kontroller der er bundet til databasen, hvad gør du?
Uanset hvad du gør skulle det være let at tjekke, men vis lige lidt kode først :o)
Det er lavet i vba-word: Sub Kunde() Kundenr = InputBox("indtast kundenr") Dim objConn As ADODB.Connection Dim objRs As ADODB.Recordset Dim strConnString As String Dim strSQL As String
Set objConn = New ADODB.Connection Set objRs = New ADODB.Recordset
der er også tlfnr på kunderne i databasen...jeg vil så ændre til at der indtastes tlfnr i stedet for kundenr. Jeg ved at der vil optræde ens tlf.nr..det vil jeg så fange når der gør, og give mulighed for at vælge hvilken konto der skal vælges, når f.eks ettlfnr. peger på flere konti
The only way I see you can select a specific "kunde" from moe thant one is either using a primary key which you know the value of, or include another field in the WHERE of your select which specifies the one you want, for example.
strSQL = "SELECT Kundenr,Navn1, Adresse, postby FROM kundekartotek WHERE TelefonNr = '" & TelefonNr & "' AND PostBy = " & PostBy
But in my opinion you are making problems for yourself!
Sub Kunde() Telefonnr = InputBox("indtast telefonnr") '< RETTET Dim objConn As ADODB.Connection Dim objRs As ADODB.Recordset Dim strConnString As String Dim strSQL As String Dim arrNavn() as String '< NY Dim arrAdresse() as String '< NY Dim arrPostnr() as Integer '< NY Dim arrKundenr() as Integer '< NY Dim strTelefonnr as String '< NY
Set objConn = New ADODB.Connection Set objRs = New ADODB.Recordset
strSQL = "SELECT Kundenr,Navn1, Adresse, telefonnr, postby FROM kundekartotek WHERE telefonnr = " & telefonnr '< RETTET objRs.Open strSQL, objConn
'Så kommer min molbo-agtige kode:
i = 0 While not objRs.EOF i = i+1 strTelefonnr = objRs("telefonnr") redim preserve arrNavn(i) redim preserve arrAdresse(i) redim preserve arrPostnr(i) redim preserve arrkundenr(i) arrNavn(i) = objRs("Navn1") arrAdresse(i)= objRs("Adresse") arrPostnr(i) = objRs("postby") arrkundenr(i) = objRs("Kundenr") wend if i>1 then msgbox " Der findes " & i-1 " poster med det nummer. Vælg en" 'En form eller lignende der viser valgmuligheder (udlæses fra arrays) vises 'og der vælges en post. Posten registreres (som post nummer 'i' - dvs. 'i' 'får den værdi som brugeren vælger) end if
Sådan. Er ikke testet. Jeg ved ikke hvor telefonnummer står og hvad posten hedder i din database, ret selv i bl.a. din connectionstring. Og hvordan du vil lade brugeren vælge mellem flere poster ved jeg ikke, måske ved en form med radiobuttons, eller en listbox hvor der klikkes på den post der skal vælges, eller... Det må du selv vælge :o)
Har ikke testet, så måske er der en smutter et sted. Men nu har du da en ide til en fremgangsmåde.
En anden måde er at operere direkte på recordsettet i stedet for at smide det over i arrays. Det har jeg bare lidt uheldige erfaringer med, derfor foreslår jeg løsningen med arrays....
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.