|
| Run-time error '3263' i VBA Word mod Acces~ Fra : Steen H. Pedersen |
Dato : 23-06-04 10:43 |
|
Jeg er gået lidt død i forbindelse med at jeg (endelig) har fået kontakt til
min database på min lokale maskine, men når jeg skal afvikle koden mod
databasen på serveren opstår ovenstående fejl ("Item cannot be found in the
collection corresponding to the requested name or ordinal").
Som det fremgår af nedenstående henter "stumpen" navn, adresse o.s.v på
baggrund af medlemmets CPR, og det hele går godt indtil adressen skal
hentes - fornavn og efternavn hentes men så opstår fejlen.
Det er en kopi af databasen jeg har hentet fra serveren og lagt på min egen
maskine, og der fungerer det hele 100% ?????????? hvof' de' ???
..........
Sub HentMedlem()
Dim strSQL As String
strSQL = "SELECT * FROM medl WHERE cprnr='" + inputModtager + "'"
Dim cnnModtager As ADODB.Connection, rsModtager As Recordset
Set cnnModtager = New ADODB.Connection
cnnModtager.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;Data
Source=" _
+ database
cnnModtager.Open
svar = inputModtager
Set rsModtager = New ADODB.Recordset
rsModtager.Open strSQL, cnnModtager, adOpenStatic, adLockReadOnly
navn = rsModtager("fornavn") + " " + rsModtager("efternavn")
adresse = rsModtager("adresse")
postnr = rsModtager("postnr")
by = rsModtager("postadresse")
rsModtager.Close
cnnModtager.Close
End Sub
..........
(der er udeladt lidt fejlbehandling (modus11 kontrol o.s.v.))
Jeg håber nogen kan give et svar
Hilsen
Steen
| |
Tomas Christiansen (23-06-2004)
| Kommentar Fra : Tomas Christiansen |
Dato : 23-06-04 22:23 |
|
Steen H. Pedersen skrev:
> "Item cannot be found in the collection corresponding to the requested
> name or ordinal"
Det betyder at den nøgleværdi (en tekststreng) eller det heltal som du
angiver ikke eksisterer.
Efter at have kigget på din kode, ser det ud til at det måde være denne
linier, som fejler:
adresse = rsModtager("adresse")
Fejlbeskeden angiver altså at der ikke findes noget felt med navnet
"adresse" i din database!
Du kan checke hvilke felter som du har fået hentet ind i dit recordset, ved
at løbe alle felter igennem og udskrive deres navn, f.eks. noget i retning
af:
Dim Felt As ADODB.Field
For Each Felt In rsModtager.Fields
Debug.Print Felt.Name
Next
Lige en kommentar:
> strSQL = "SELECT * FROM medl WHERE cprnr='" + inputModtager + "'"
Pas på med at bruge + som strengkonkateneringsfunktion. Du kan komme ud i
nogle gevaldige problemer med flere (skjulte) konverteringer frem og tilbage
mellem strenge og tal, hvis et eller flere af strengene i virkelighden er
heltal eller kommatal.
Væn dig i stedet til altid at bruge &, for så gennemtvinger du automatisk en
konvertering af begge argumenter til strenge inden de forsøges konkateneret.
-------
Tomas
| |
|
|