Avatar billede iziqio Nybegynder
03. december 2004 - 11:53 Der er 22 kommentarer og
2 løsninger

Kun 256 tegn i SQL sætning?

Kan man kun lave en sql sætning på 256 tegn?
Hvad gør jeg hvis jeg vil lave en forespørgsel der er længere end 256 tegn i en access database?
Avatar billede iziqio Nybegynder
03. december 2004 - 11:53 #1
henvisninger... til dokumentation - vil være lækkert
Avatar billede mugs Novice
03. december 2004 - 11:58 #2
Jeg har ingen henvisning, men kan dette ikke lade sig gøre (Ikke afprøvet):

SQL1 = bla bla
SQL2 = bla bla bla
SQL = SQL1 & SQL2
Avatar billede only-boy Nybegynder
03. december 2004 - 11:58 #3
Du skal kalde feltet fot "notat" så vidst jeg husker
03. december 2004 - 11:59 #4
Herunder ser du begrænsningerne i en forespørgssel:
Attribut Maksimum
Antal tvungne relationer 32 pr. tabel minus det antal af indeks, der findes i tabellen for felter eller kombinationer af felter, som ikke vedrører en relation
Antal tabeller i en forespørgsel 32
Antal felter i et postsæt 255
Størrelsen på et postsæt 1 gigabyte
Sorteringsbegrænsning 255 tegn i et eller flere felter
Antal niveauer i indlejrede forespørgsler 50
Antal tegn i en celle i forespørgselsgitteret 1.024
Antal tegn for en parameter i en parameterforespørgsel 255
Antal forekomster af AND i en WHERE- eller HAVING-delsætning 99
Antal tegn i en SQL-sætning ca. 64.000
Avatar billede iziqio Nybegynder
03. december 2004 - 11:59 #5
altså dele den op?
SQL1 = SELECT XXX
SQL2 = FROM YYY
SQL = SQL1 + SQL2
?
Avatar billede hmortensen Nybegynder
03. december 2004 - 11:59 #6
Er det et felt der ikke kan indeholde nok tekst, eller er det, som du skriver, selve forespørgelsen, der ikke kan være mere end 256 tegn ?
Avatar billede overchord Nybegynder
03. december 2004 - 12:00 #7
jeg har selv haft problemer med dette enkelte gange. Jeg kan ikke helt pin-pointe hvor det gaar galt, men indtil videre bruger jeg mugs metode naar det gaar galt - altsaa del din sql op i 2-flere undersaetinger og derefter joined dem sammen enten i en ny string eller direkte i en kommando som f.eks DoCmd.RunSQL(sql(1) & sql(2) & sql(3))
Avatar billede iziqio Nybegynder
03. december 2004 - 12:01 #8
Så jeg skal bruge deres "generator" eller ?
Hvor skal jeg så skrive forespørgslen ?
03. december 2004 - 12:04 #9
Jeg kan ikke helt forstå problemet? Jeg har lige kørt denne uden problemer:

    Dim SQL As String
    SQL = "DELETE tblOrganisationskoder.Version, tblFaggruppe_Formål.* FROM (tblOrganisationskoder INNER JOIN tblSubOrganisationskoder ON tblOrganisationskoder.OrganisationsID = tblSubOrganisationskoder.OrganisationsID) INNER JOIN (tblKardex_ChefOmråder INNER JOIN (tblChef_Faggruppe INNER JOIN tblFaggruppe_Formål ON tblChef_Faggruppe.ChefFaggruppeID = tblFaggruppe_Formål.ChefFaggruppeID) ON tblKardex_ChefOmråder.ChefOmrådeID = tblChef_Faggruppe.ChefområdeID) ON tblSubOrganisationskoder.SubOrganisationsID = tblKardex_ChefOmråder.SubOrganisationsID WHERE (((tblOrganisationskoder.Version)=GetVersionKopierTil()));"
    DoCmd.RunSQL SQL

Og der er 606 karakterer...
Avatar billede iziqio Nybegynder
03. december 2004 - 12:07 #10
hvor kørte du det?
Via VB ? eller hvordan ?
Avatar billede iziqio Nybegynder
03. december 2004 - 12:08 #11
Jeg laver en Macro der udføre en SQL sætning - er der en anden måde der kan tage flere tegn ?
03. december 2004 - 12:08 #12
ja.

Hvad gør du??
ASP?
03. december 2004 - 12:09 #13
ahh....aldrig bruge makroer ;o)
Avatar billede overchord Nybegynder
03. december 2004 - 12:10 #14
Der er to maader at lave den paa: enten direkte i SQL - eller via VBA kode.
Hvis du skriver SQL-koden direkte gaar du ind i SQL-visningen naar du er igang med at designe forespoergslen

Hvis du laver den i VBA skal du igang med at sammenstykke SQL seatningen. F.eks hvis du skal hente feltnavne fra et recordset kan du loope igenne disse og tilfoeje til en given stump af saetningen f.eks

strsql(1) = " SELECT Tabel1.etfelt, "

for i = 1 to rs.Fields.Count -1
    strsql(2) = rs.Field(i).Name & ", "
next i

strsql(2) = left(strsql(2), len(strsql2) -2)

strsql(3) = " FROM Tabel1 inner join  tabel2 on Tabel1.Id = Tabel2.Subid;"

dbs.CreateQueryDef("myNewQuery", strsql(1) & strsql(2) & strsql(3)
Avatar billede jensen363 Forsker
03. december 2004 - 12:14 #15
Benyt DAO istedet ...  du kan opbygge en mere overskuelig programkode, og der er
mig bekendt ingen begrænsninger i længden

Function KodeEksempel()
  Dim strSQL As String
  Dim db As DAO.Database

    strSQL = "UPDATE XXXXXX "
    strSQL = strSQL & "SET YYYYYY "
    strSQL = strSQL & "WHERE xx = yy;"

    db.Execute strSQL

End Function
Avatar billede overchord Nybegynder
03. december 2004 - 12:17 #16
Jensen har ret i at det kan betale sig at bruge DAO - forudsat at du har Access 2000 eller nyere. DAO virker ikke for Access 97.
03. december 2004 - 12:25 #17
øh, Overchord: Access 97 er KUN DAO.
Det var ADO, som blev introduceret i 2000 :o)
Avatar billede overchord Nybegynder
03. december 2004 - 12:27 #18
ROTFL - ja sorry - jeg kager lidt rundt i det idag :-)
Avatar billede jensen363 Forsker
03. december 2004 - 12:28 #19
ROTFL ... thats a new one ???
03. december 2004 - 12:31 #20
rolling on the floor laughing :)
Avatar billede jensen363 Forsker
03. december 2004 - 12:34 #21
Thats a good vending .... c",)
Avatar billede overchord Nybegynder
03. december 2004 - 12:34 #22
maybe we can use that in another afsnit?
03. december 2004 - 15:52 #23
Izigio->fik du løst dit problem?
Avatar billede iziqio Nybegynder
04. december 2004 - 11:06 #24
yes tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester