Avatar billede guyb_rdk Nybegynder
01. september 2004 - 09:02 Der er 17 kommentarer og
2 løsninger

Avanceret Sql sætning. En fejl fremkommer ( Fejlretning)

Hejsa.
Jeg sidder og roder med noget SQLkode som ikke fungerer efter hensigten. Jeg skal tilrette et program ( Det skal siges at jeg på ingen måde er SQL-ekspert, og alene det faktum at jeg begiver mig i kast med dette sker da jeg har noget god hjælp rundt om mig), men denne fejlmeddelse fremkommer

navn CPN insert into documents (docid, doctype, docname, author, creationdate, projectID, companyID, departmentID, comments,DocStore, CreatedDocTypeId, keywords, docstatusid, legacyid, danfossid, deleted) select IIf(Max(docid) Is Null,1,Max(docid)+1),4,'CPN test1',CPN,Now() ,2,3,2,'','C:\Documents and Settings\cpn\Desktop\tester.doc',0,'',1,'','',0 from documents where doctype =4
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
--------------------
Denne del af programmet skulle have fungeret med MySQL, men skal nu køre via en access-database.
Som man kan se i den underliggende kode skulle funktionen Now() anvendes. Tidligere brugte programmet Date() og GetDate(), men disse skulle volde en del problemer i access, så Now() virkede som det bedste valg.

/******************koden******************\
if isAccess then
%>
<% sql = sql & " insert into documents (docid, doctype, docname, author, creationdate, projectID, companyID, departmentID, comments,DocStore, CreatedDocTypeId, keywords, docstatusid, legacyid, danfossid, deleted) "%>
<% sql = sql & " select IIf(Max(docid) Is Null,1,Max(docid)+1)," &docType& ",'" &docName&  "'," &author& ",Now()"%>
<% sql = sql & "," &CStr(projectID)& "," &CStr(company)& "," &CStr(department)& ",'" &comments& "','"&docStore&"',"&CreatedDocTypeId & ",'"&keywords&"',1,'"&legacyId&"','"&danfossId&"',0" %>
<% sql = sql & " from documents where doctype ="&docType %>
<%
else

sql = "declare @next int" & vbnewline
sql = sql & " set @next = (select Max(docid)+1 from documents where doctype ="&docType& ")"& vbnewline
sql = sql & "if (@next is null)" & vbnewline
sql = sql & "  set @next = 1 " & vbnewline
sql = sql & "  " & vbnewline
sql = sql & "insert into documents (docid, doctype, docname, author, creationdate, projectID, companyID, departmentID, comments,DocStore, CreatedDocTypeId, keywords, docstatusid, legacyid, danfossid, deleted) "
sql = sql & "values(@next," &docType& ",'" &docName&  "'," &author& ",Now()"
sql = sql & " ," &CStr(projectID)& "," &CStr(company)& "," &CStr(department)& ",'" &comments& "','"&docStore&"',"&CreatedDocTypeId & ",'"&keywords&"',1,'"&legacyId&"','"&danfossId&"',0)"
Avatar billede fennec Nybegynder
01. september 2004 - 09:11 #1
Der er noget galt med din SQL-sætning, hvis det er den du viser "navn CPN insert into......,'',0 from documents where doctype =4"

Indsæt syntax er:
"insert into DinTabel(kolonner) values(værdier)"

Update syntax er:
"update DinTabel set enKolonne=Værdi, enKolonne=Værdi where enBetingelseErOpfyldt"

Så ?'et er om du skal indsætte en ny række eller opdatere.
Avatar billede fennec Nybegynder
01. september 2004 - 09:13 #2
Hvis det er almindelig indsæt, skal din linje være sådan:

<% sql = " insert into documents (docid, doctype, docname, author, creationdate, projectID, companyID, departmentID, comments,DocStore, CreatedDocTypeId, keywords, docstatusid, legacyid, danfossid, deleted) "%>
<% sql = sql & " select IIf(Max(docid) Is Null,1,Max(docid)+1)," &docType& ",'" &docName&  "'," &author& ",Now()"%>
<% sql = sql & "," &CStr(projectID)& "," &CStr(company)& "," &CStr(department)& ",'" &comments& "','"&docStore&"',"&CreatedDocTypeId & ",'"&keywords&"',1,'"&legacyId&"','"&danfossId&"',0" %>
Avatar billede guyb_rdk Nybegynder
01. september 2004 - 09:17 #3
ups...  Fra "navn CPN insert ... til ... [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1."
er den fejlmeddelse jeg får i explorer
Avatar billede eagleeye Praktikant
01. september 2004 - 09:18 #4
Prøv såsne her med:

<% sql = " insert into documents (docid, doctype, docname, author, creationdate, projectID, companyID, departmentID, comments,DocStore, CreatedDocTypeId, keywords, docstatusid, legacyid, danfossid, deleted) "%>
<% sql = sql & " values ( IIf(Max(docid) Is Null,1,Max(docid)+1)," &docType& ",'" &docName&  "'," &author& ",Now()"%>
<% sql = sql & "," &CStr(projectID)& "," &CStr(company)& "," &CStr(department)& ",'" &comments& "','"&docStore&"',"&CreatedDocTypeId & ",'"&keywords&"',1,'"&legacyId&"','"&danfossId&"',0)" %>
Avatar billede guyb_rdk Nybegynder
01. september 2004 - 09:44 #5
Now() bliver stadig bare skrevet ud som en tekststreng.. desværre ...
Skulle du der forresten være nogle problemer i at anvende Now() funktionen i access ?
Avatar billede eagleeye Praktikant
01. september 2004 - 09:51 #6
Det skulle gerne virker med now()
Avatar billede fennec Nybegynder
01. september 2004 - 09:56 #7
Hvorfor tæller du selv docid op. Hvis det er sat som autonummer klarer Access det selv...
Hvis du skriver din sql ud på skærmen står der selvfølgelig now(), men når det bliver fortolket af Access skulle den gerne bruge funktionen.
Avatar billede guyb_rdk Nybegynder
01. september 2004 - 10:01 #8
ok.. jeg er lige kaldt til møde fra nu til middag, så når først at kigge på det derefter, men kan du ikke lige smide et svar herinde, så jeg kan delegere nogle point din vej, hvis jeg skulle få løst det efter de anvisninger du har givet mig, når jeg kommer tilbage hr ?
Avatar billede guyb_rdk Nybegynder
01. september 2004 - 10:03 #9
fennec. jeg må lige kigge på det med doc-id når jeg kommer tilbage. Jeg sidder og tester systemet af samtidig ( Dette udsnit er en del af en komplet kode, som jeg sidder og tester af i løbende ) og den tolker den desværre ikke 8/
Avatar billede fennec Nybegynder
01. september 2004 - 10:06 #10
Hvis den er sat til autonummer, skal den ikke med på din liste i indsæt. Så tæller den selv.
Avatar billede eagleeye Praktikant
01. september 2004 - 10:09 #11
ok :)
Avatar billede guyb_rdk Nybegynder
01. september 2004 - 11:30 #12
lidt tidligere tilbage end forventet, så tilbage til arbejdet :
eagleeye. jeg fik en "Syntax error (missing operator) in query", med dine ændringer, men en parantes ved values ( IIf(Max(docid)hjalp. Nu får jeg desværre "Number of query values and destination fields are not the same "
nogen ideer ?
Avatar billede fennec Nybegynder
01. september 2004 - 11:33 #13
prøv lige at skrive din sql sætning ud på skærmen og smid den herind, så vi kan se den.
Avatar billede guyb_rdk Nybegynder
01. september 2004 - 11:39 #14
/**** værdien af sql (navnet på sql-sætningen ) via en response.write(sql)****\
insert into documents (docid, doctype, docname, author, creationdate, projectID, companyID, departmentID, comments,DocStore, CreatedDocTypeId, keywords, docstatusid, legacyid, danfossid, deleted) values ( IIf(Max(docid) Is Null,1,Max(docid)+1)),3,'CPN test1',CPN,Now(),2,3,2,'','',0,'',1,'','',0 from documents where doctype =3
****************************************************************
den der ?
Avatar billede fennec Nybegynder
01. september 2004 - 11:49 #15
Prøv at fjerne "from documents where doctype =3" fra sql'en.

var docid et autonummer???
Avatar billede fennec Nybegynder
01. september 2004 - 11:54 #16
også er der problemer med (). Der skal den sidste ) flyttes fra (IIf(Max(docid)... hen efter værdierne, så resultatet bliver:

insert into documents (docid, doctype, docname, author, creationdate, projectID, companyID, departmentID, comments,DocStore, CreatedDocTypeId, keywords, docstatusid, legacyid, danfossid, deleted) values ( IIf(Max(docid) Is Null,1,Max(docid)+1),3,'CPN test1',CPN,Now(),2,3,2,'','',0,'',1,'','',0)

og hvis docid er et autonummer skal det se sådan ud:

insert into documents (doctype, docname, author, creationdate, projectID, companyID, departmentID, comments,DocStore, CreatedDocTypeId, keywords, docstatusid, legacyid, danfossid, deleted) values (3,'CPN test1',CPN,Now(),2,3,2,'','',0,'',1,'','',0)
Avatar billede guyb_rdk Nybegynder
01. september 2004 - 12:01 #17
docid er et autonummer, men ikke genereret i databasen. Accessdatabasen fungerer udelukkende som lager af brugere, kontrollant af deres rettigheder og backup-system af brugere.
Docid er beregnet i en asp-funktion andetsteds i koden

udkommenteringen af "from docu..." gjorde ingen forskel. Fejlmeddelelsen er den samme, men nu er den linie selvfølgelig ikke med 8)


ps.. smid lige et svar.. jeg er snart løbet tør for tid, så vil ilge fordele pointene mellem jer som tak for hjælpen
Avatar billede fennec Nybegynder
01. september 2004 - 12:07 #18
jeg har det ikke godt med at tage point for et ? der ikke er blevet løst, men det er op til dig hvis du vil give point for den hjælp du har fået. Har du fået flyttet den ene parentes også???
Avatar billede guyb_rdk Nybegynder
01. september 2004 - 12:35 #19
yep, den har jeg fået flyttet 8)

det skal du ikke tænke på, jeg gir dem gladeligt for den hjælp jeg har fået..
Jeg går i krig med min mester nu, så vi skal nok få det problem lagt ned.
Tak for hjælpen de herrer
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