webForumDet fria alternativet

Jämföra strängar

ASP

9 svar · 502 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Frågan#1

:birp
Hej på er alla glada wf:are...

Det närmar sig...

Har följande kod som kontrollerar om ett databasfät är tomt och ´därmed anpassar koden:

Koden ligger inom en loop.

'Kontrolera om fältet Task är tomt
		sSQL = "SELECT Task FROM tblTask WHERE Id = " & iNewTaskId 
		Set objRS = objConn.Execute(sSQL)
		
		if not objRS.EOF then 
   			if "" & objRS("task") <> "" then sTask = vbCrlF & sTask
		End If	
		
		objRS.Close
		Set objRS = Nothing

Jag skulle väldigt gärna vilja ha hjälp med att bygga ut den koden för att även jämföra strängarna med varandra.

är strängen som loopas ut lika med den som finns i databasen behöver inget göras. Skiljer sig dom skall det bli en radbrytning och den utloopade strängen skall skrivas till databasen... Den utloopade strängen heter sTask....

Tack på förhand!

Mvh
henrik

Medlem sedan dec. 20025 483 inlägg
#2

Vilka är strängarna? Vad vill du göra med sTask efter kodblocket du postat?

Medlem sedan juli 20041 183 inlägg
#3

Äh, jag ger också upp. Försök precisera lite bättre så kan vi nog komma fram till en lösning...

Medlem sedan jan. 20013 582 inlägg
#4

:)

Ja, det är så svårt att förklara i text....

sTask är det det "nya" värdet som loopas ut. (det handlar om sammanfogning av uppdrag)

sTask ska skrivas till det nya sammanfogade uppdraget.

Jag vill därför jämföra sTask med det som redan står i databasen objRS("Task")

Efter kodblocket skall sTask skrivas till databasen....

Komplett kod finns i asp-forumet
http://www.webforum.nu/showthread.php?p=1137341#post1137341

Mvh
henrik

Medlem sedan juli 20041 183 inlägg
#5

Hmm, jag tycker du verkar göra på ett ganska krångligt sätt...

Kan du inte bara i en tabell skapa alla kolumner (jobbnummer (=unikt nummer), projektnummer, tid, material, osv). Sen om du vill sammanfoga hämtar du alla uppdragsnummer som är samma.

Alltså jobbnummret är id-nummret för alla poster. Projektnummret kan sedan vara, kanske 14, som är projektnummret-nummret för att bygga ett hus. Därav kan en massa olika personer använda 14 om det är samma projekt. Om du sedan vill ha ordning på projekten så gör du en ny databas där projektnummret är unikt och där du kanske sparar namn på projekten...

Är detta ungefär vad du vill göra?? Har jag förklarat någorlunda tydligt eller är det bara en enda stor röra?? :P

Medlem sedan jan. 20013 582 inlägg
#6

Hej!
Probemet, som så många gånger varit uppe, är att jag jobbar i en befintlig databasstruktur som tyvärr inte går att ändra.. det jag har, har jag sas... :)

Jag ska återkomma medlite bättre förklaring och kod senare...

Mvh
henrik

Medlem sedan dec. 20025 483 inlägg
#7

Jämför du inte strängarna här

		if not objRS.EOF then 
   			if "" & objRS("task") <> "" then sTask = vbCrlF & sTask
		End If

?

Om strängarna är lika kommer ju sTask att vara lika med tblTask.Task där tblTask.Id = iTaskId.

Uppdateringen gör du väl med

		sSQL = "UPDATE tblTask Set Status = " & iTaskStatus & ", RemoteId = " & iRemoteId & ", CreatedBy = '" & sCreatedBy & "', TaskNr = '" & sTaskNr & "', " &_ 
			   "PlanDateType = " & iPlanDateType & ", PlanStartDate = #" & dPlanStartDate & "#, PlanStopDate = #" & dPlanStopDate & "#, User = '" & sUser & "', " &_
			   "CustomerNr = '" & sCustomerNr & "', CustomerName = '" & sCustomerName & "', CustomerRef = '" & sCustomerRef & "', Task = Task & '" &  sTask  & "', " &_
			   "CustomT1 = '" & sCustomT1 & "', CustomT2 = '" & sCustomT2 & "', CustomT3 = '" & sCustomT3 & "', " &_
			   "Action = Action & '" & sAction & "', CustomA1 = '" & sCustomA1 & "', CustomA2 = '" &  sCustomA2 & "', " &_
			   "CustomA3 = '" & sCustomA3 & "', StartDate = #" & dStartDate & "#, StopDate = #" & dStopDate & "#, Log = Log & '" & vbCrLf & sLog & "', " &_
			   "Object1Nr = '" & sObject1Nr & "', Object1Name = '" & sObject1Name & "', Object2Nr = '" & sObject2Nr & "', Object2Name = '" & sObject2Name & "', " &_
			   "Object3Nr = '" & sObject3Nr & "', Object3Name = '" & sObject3Name & "', Object4Nr = '" & sObject4Nr & "', Object4Name = '" & sObject4Name & "' " &_
			   "WHERE Id = " & iNewTaskId & ""
			  
		objConn.Execute sSQL,, 128
Medlem sedan jan. 20013 582 inlägg
#8

Den biten kollar om tblTask.Task är tom, är den inte det så läggs en radbrytning in innan nästa sTask läggs in. Är tblTask.Task tom så läggs bara sTask in utan radbrytning.

Det är denna kod jag vill utöka för att inte bara kolla om tblTask.Task är tom utan även jämföra det som redan står med det som eventuellt skall puttas in...

Mvh
henrik

Medlem sedan juni 200032 967 inlägg
#9

Även här är jag lite osäker på om jag förstår. :D

Vill du endast göra uppdatering om inte det som redan står i fältet är det du vill stoppa in? I så fall:

if "" & objRS("task") <> sTask then
      if "" & objRS("task") <> "" then sTask = vbCrlF & sTask
      ' gör update, etc
     ...
end if

Har jag tolkat rätt?

mvh

Medlem sedan jan. 20013 582 inlägg
#10

Hej! :)

Efter lite trixande och hjälp från väster så har jag denna kod som fungerar...

'Kontrollera om fältet tblTask.Task är tomt. Är det inte tomt jämförs sTask med sPrevTask
		sSQL = "SELECT Task FROM tblTask WHERE Id = " & iNewTaskId 
		Set objRS = objConn.Execute(sSQL)
		
		sPrevTask = "" & objRS("Task")
		
		If not objRS.EOF then
			if sPrevTask <> "" then
				if sPrevTask <> sTask then sTask = sPrevTask & vbcrlf & sTask
			end if
		End If

		objRS.Close
		Set objRS = Nothing

Mvh
Henrik

267 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)