webForumDet fria alternativet

"Sammanfogning" av databasposter

11 svar · 446 visningar · startad av devotion

devotionMedlem sedan jan. 20013 582 inlägg
#1

Hej! :)

Mitt lilla projekt går vidare...

Eftersom flera montörer kan ha samma uppdrag (dvs samma uppdragsnummer, men inte samma Id). Ska dom kunna sammanfoga uppdragen till ett (1) när alla är klara.

Det "sammanfogade" uppdraget skall då få all tid och material som är kopplat till uppdragsnumret...

Jag vet inte riktigt i vilken ände jag ska börja i...

Uppdragen består av data från tabellerna:
tblTask
tblTime
tblMaterial

Är det någon som kan ge mig en knuff i rätt riktning?

Mvh
henrik

emissionMedlem sedan dec. 19996 721 inlägg
#2

1. Skapa ett nytt uppdrag (eller bestäm dig för av uppdragen, som får bli det sammanfogade)

2. Flytta in all data från uppdragen till ovanstående uppdrag


UPDATE tblTask SET id=nytt_id WHERE uppdragsnummer=blablabla
devotionMedlem sedan jan. 20013 582 inlägg
#3

Jaha, ingen rast ingen ro....

Då ska vi se om jag kan fixa ihop det här ikväll/natt...

då borde arbetsgången bli så här:

1. Skapa ett nytt uppdrag

2. Föra över informationen från de uppdragen som slås ihop till det nya uppdraget

2. uppdatera posterna i tblTime och tblMaterial med det nya uppdragsId´t

3. radera det gamla uppdraget...

Ska prova nu, men är jag på rätt väg?

Jag lär nog återkomma under kvällen...

Mvh
henrik

Ps och tack emission för det förra svaret... har haft lite mycket att göra och inte hunnit ta mig an detta förrän nu...

emissionMedlem sedan dec. 19996 721 inlägg
#4

Ja, du är på rätt väg. Du behöver dock inte skapa ett nytt uppdrag, utan kan behålla ett av de ursprungliga (t.ex. det senaste) och använda det som "måluppdrag"

devotionMedlem sedan jan. 20013 582 inlägg
#5

Okej... har gjort ett försök med att skapa ett nytt... får se om jag har kvar det så... Försöker göra detta "webskalet" så likt windowsapplikationen som möjligt....

Men jag har en liten fråga...

Kan man göra så här

sSQL = "UPDATE tblTime Set TaskId = " & iNewTaskId & " Where TaskId = " & iTaskId

iNewTaskId är det som skapades med det nya uppdraget
iTaskId är det Id som d uppdragen som skall slås samman har (de ligger i en loop)

Tycker det ser lite konstigt ut....

Mvh
henrik

devotionMedlem sedan jan. 20013 582 inlägg
#6

skickar med hela koden...

'Förhindra att användare som inte är inloggade får åtkomst till sidan.
If Request.Cookies("sydostel")("userId") <> "" then
	
	'Deklarera variabler
	Dim sSQL, objRS, objConn, sTasks, iNewTaskId, i, itaskId, iTaskStatus, iRemoteId, sCreatedBy, sTaskNr, iPlanType, dPlanStopDate, dPlanStartDate, sUser, sCustomerNr, sCustomerName, sCustomerRef, sTask, sCustomT1, sCustomT2, sCustomT3, sAction, SCustomA1, SCustomA2, SCustomA3, dStartDate, dStopDate, sLog, sObject1Nr, sObject1Name, sObject2Nr, sObject2Name, sObject3Nr, sObject3Name, sObject4Nr, sObject4Name, iPlanDateType
		
	'Öppna databasen
	Set objConn = Server.CreateObject("ADODB.Connection")
	objConn.ConnectionString = "DSN=uppdragNu"
	objConn.Open
	
	'Hämta Id från tblNextId som det nya uppdraget får
	iNewTaskId = CLng( objConn.Execute("SELECT nextId FROM tblNextId WHERE table = 'tblTask'")("NextId") )
	
	'Skapa det nya uppdraget
	sSQL = "INSERT INTO tblTask (Id, Modified, CreatedBy, CreatedDate) VALUES (" & iNewTaskId & ", Now(), '" & sCreatedBy & "', Now())"
	objConn.Execute sSQL,,128
	
	'Uppdatera tblNextId
	sSQL = "UPDATE tblNextId SET nextId = nextId + 1 WHERE Table = 'tblTask'"
	objConn.Execute sSQL,, 128
	
	'Loopa ut informationen för de uppdragen som skall slås ihop
	For i = 1 To Request.Form("checkTask").Count
		
		'Hämta information från vart och ett av uppdragen
		iTaskId = request.form("checkTask")(i)
		
		'SQL-fråga för att hämta uppdraget i databasen
		Set objRS = objConn.Execute("SELECT * FROM tblTask WHERE Id = " & iTaskId & " ORDER BY ID")
		
		'Tilldela värden till variablerna
		iTaskstatus = objRS("Status")
		iRemoteId = objRS("RemoteId")
		sCreatedBy = objRS("createdBy")
		sTaskNr = objRS("TaskNr")
		iPlanDateType = objRS("PlanDateType")
		dPlanStartDate = objRS("planStartDate")
		dPlanStopDate = objRS("planStopDate")
		sUser = "(Flera)"
		sCustomerNr = objRS("CustomerNr")
		sCustomerName = objRS("customerName")
		sCustomerRef = objRS("customerRef")
		sTask = objRS("Task")
		sCustomT1 = objRS("CustomT1")
		sCustomT2 = objRS("CustomT2")
		sCustomT3 = objRS("CustomT3")
		sAction = objRS("Action")
		SCustomA1 = objRS("CustomA1")
		SCustomA2 = objRS("CustomA2")
		SCustomA3 = objRS("CustomA3")
		dStartDate = objRS("StartDate")
		dStopDate = objRS("StopDate")
		sLog =objRS("Log")
		sObject1Nr = objRS("Object1Nr")
		sObject1Name = objRS("Object1Name")
		sObject2Nr = objRS("Object2Nr")
		sObject2Name = objRS("Object2Name")
		sObject3Nr = objRS("Object3Nr")
		sObject3Name = objRS("Object3Name")
		sObject4Nr = objRS("Object4Nr")
		sObject4Name = objRS("Object4Name")
		
		'Uppdatera det nya uppdraget	
		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 + '" & vbCrLf + sTask & "', " &_
			   "CustomT1 = CustomT1 + '" & vbCrLf + sCustomT1 & "', CustomT2 = CustomT2 + '" & vbCrLf + sCustomT2 & "', CustomT3 = CustomT3 + '" & vbCrLf + sCustomT3 & "', " &_
			   "Action = Action + '" & vbCrLf + sAction & "', CustomA1 = CustomA1 + '" & vbCrLf + sCustomA1 & "', CustomA2 = CustomA2 + '" & vbCrLf + sCustomA2 & "', " &_
			   "CustomA3 = CustomA3 + '" & vbCrLf + 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
		
		'Radera uppdraget som sammanfogats
		sSQL = "DELETE * FROM tblTask WHERE Id = " & iTaskId
		objConn.execute(sSQL),,128
		
		'För över tiderna till det nya uppdraget
		sSQL = "UPDATE tblTime Set TaskId = " & iNewTaskId & " Where TaskId = " & iTaskId
		
		'För över materialet till det nya uppdraget
		sSQL = "UPDATE tblMaterial Set TaskId = " & iNewTaskId & " Where TaskId = " & iTaskId
		
	Next
	
	'Uppdtatera datumen i det nya uppdraget
	sSQL = "UPDATE tblTask set Modified = Now(), CreatedDate = Now() WHERE Id = " & iNewTaskId & ""
	objConn.Execute sSQL,, 128
	
Else
	Response.redirect "notLoggedOn.asp"
End If
devotionMedlem sedan jan. 20013 582 inlägg
#7

devotion skrev:

Okej... har gjort ett försök med att skapa ett nytt... får se om jag har kvar det så... Försöker göra detta "webskalet" så likt windowsapplikationen som möjligt....

Men jag har en liten fråga...

Kan man göra så här

sSQL = "UPDATE tblTime Set TaskId = " & iNewTaskId & " Where TaskId = " & iTaskId

iNewTaskId är det som skapades med det nya uppdraget
iTaskId är det Id som d uppdragen som skall slås samman har (de ligger i en loop)

Tycker det ser lite konstigt ut....

Mvh
henrik

Wee snart nyårsafton bumbetibump!!

//Henrik

Jesper TMedlem sedan nov. 20017 144 inlägg
#8

Själva sql:satsen ser rätt ut men i sammanhanget så vet jag inte om det är "rätt".
Orkar inte ögna igenom koden. :)
Gott Slut!

devotionMedlem sedan jan. 20013 582 inlägg
#9

hehe....

:)

devotionMedlem sedan jan. 20013 582 inlägg
#10

Iiiiiiiiiii!

Hade glömt en väsentlig del


...

'Radera uppdraget som sammanfogats
		sSQL = "DELETE * FROM tblTask WHERE Id = " & iTaskId
		objConn.execute(sSQL),,128
		
		'För över tiderna till det nya uppdraget
		sSQL = "UPDATE tblTime Set TaskId = " & iNewTaskId & " Where TaskId = " & iTaskId
		
		'För över materialet till det nya uppdraget
		sSQL = "UPDATE tblMaterial Set TaskId = " & iNewTaskId & " Where TaskId = " & iTaskId
		
...

Efter updateblocken

[b]objConn.execute(sSQL),,128[/b]

så kan det gå....

Edit... Det gick u bättre.... :)
henrik

devotionMedlem sedan jan. 20013 582 inlägg
#11

Hej!

Då har jag fått till funktionaliteten, med vissa avsteg, så som jag vill ha det.. Och det fungerar!

Så här kommer koden:

Spm vanligt är jag tacksam för synpunkter på koden, om jag gjort några riktiga grodor eller om det går att optimera och förkorta... Klarmarkerar dock denna tråd nu!

Mvh
Henrik

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<% Option Explicit %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<!--#include virtual="/uppdragNu/includes/functions.asp" -->
<%
' -----------------------------------------------------------------------------------
' addArticle.asp
' Version 1.000
' Senast modifierad 2005-12-29
' Kvar att göra: 
' Buggar/förbättringar:
' Logg:
' -----------------------------------------------------------------------------------

'Förhindra att användare som inte är inloggade får åtkomst till sidan.
If Request.Cookies("sydostel")("userId") <> "" then
	
	'Deklarera variabler
	Dim sSQL, objRS, objConn, sTasks, iNewTaskId, i, itaskId, iTaskStatus, iRemoteId, sCreatedBy, sTaskNr, iPlanType, dPlanStopDate, dPlanStartDate, sUser, sCustomerNr, sCustomerName, sCustomerRef, sTask, sCustomT1, sCustomT2, sCustomT3, sAction, SCustomA1, SCustomA2, SCustomA3, dStartDate, dStopDate, sLog, sObject1Nr, sObject1Name, sObject2Nr, sObject2Name, sObject3Nr, sObject3Name, sObject4Nr, sObject4Name, iPlanDateType, sTaskJoined, sInitials, dLogDate
	
	sCreatedBy = request.Cookies("sydostel")("User")
		
	'Öppna databasen
	Set objConn = Server.CreateObject("ADODB.Connection")
	objConn.ConnectionString = "DSN=uppdragNu"
	objConn.Open
	
	'Hämta Id från tblNextId som det nya uppdraget får
	iNewTaskId = CLng( objConn.Execute("SELECT nextId FROM tblNextId WHERE table = 'tblTask'")("NextId") )
		
	'Skapa det nya uppdraget
	sSQL = "INSERT INTO tblTask (Id, Modified, CreatedBy, CreatedDate) VALUES (" & iNewTaskId & ", Now(), '" & sCreatedBy & "', Now())"
	objConn.Execute sSQL,,128
	
	'Uppdatera tblNextId
	sSQL = "UPDATE tblNextId SET nextId = nextId + 1 WHERE Table = 'tblTask'"
	objConn.Execute sSQL,, 128
	
	'Loopa ut informationen för de uppdragen som skall slås ihop
	For i = 1 To Request.Form("checkTask").Count
		
		'Hämta information från vart och ett av uppdragen
		iTaskId = cLng(request.form("checkTask")(i))
		
		'SQL-fråga för att hämta uppdraget i databasen
		sSQL = "SELECT * FROM tblTask WHERE Id = " & iTaskId & " ORDER BY ID"
		Set objRS = objConn.Execute(sSQL)		
		
		'Tilldela värden till variablerna
		iTaskstatus = objRS("Status")
		iRemoteId = objRS("RemoteId")
		sCreatedBy = objRS("createdBy")
		sTaskNr = objRS("TaskNr")
		iPlanDateType = objRS("PlanDateType")
		dPlanStartDate = objRS("planStartDate")
		dPlanStopDate = objRS("planStopDate")
		sUser = "(Flera)"
		sCustomerNr = objRS("CustomerNr")
		sCustomerName = objRS("customerName")
		sCustomerRef = objRS("customerRef")
		sTask = objRS("Task")
		sCustomT1 = objRS("CustomT1")
		sCustomT2 = objRS("CustomT2")
		sCustomT3 = objRS("CustomT3")
		sAction = objRS("Action")
		SCustomA1 = objRS("CustomA1")
		SCustomA2 = objRS("CustomA2")
		SCustomA3 = objRS("CustomA3")
		dStartDate = objRS("StartDate")
		dStopDate = objRS("StopDate")
		sLog =objRS("Log")
		sObject1Nr = objRS("Object1Nr")
		sObject1Name = objRS("Object1Name")
		sObject2Nr = objRS("Object2Nr")
		sObject2Name = objRS("Object2Name")
		sObject3Nr = objRS("Object3Nr")
		sObject3Name = objRS("Object3Name")
		sObject4Nr = objRS("Object4Nr")
		sObject4Name = objRS("Object4Name")
		
		objRS.Close
		Set objRS = Nothing
		
		'Bygga en kommaseparerad sträng med de sammanslagna uppdragsnumrena 
		sTaskJoined = sTaskJoined & sTaskNr & ", " 
		
		'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
		
		'Kontrolera om fältet Action är tomt
		sSQL = "SELECT Action FROM tblTask WHERE Id = " & iNewTaskId 
		Set objRS = objConn.Execute(sSQL)
		
		if not objRS.EOF then 
   			if "" & objRS("Action") <> "" then sAction = vbCrlF & sAction
		End If	
		
		objRS.Close
		Set objRS = Nothing
		
		'-------------------------------------Block för Custom T1 till T3
		'Kontrollera CustomT1
		sSQL = "SELECT CustomT1 From tblTask Where Id = " & iNewTaskId
		Set objRS = objConn.Execute(sSQL)
		
		If Not objRS.EOF Then
			if objRS("customT1") <> sCustomT1 then 
    			sCustomT1 = sCustomT1 & ", " & objRs("customT1") 
  			end if	
		End If
		
		objRS.Close
		Set objRS = Nothing
		
		'Kontrollera CustomT2
		sSQL = "SELECT CustomT2 From tblTask Where Id = " & iNewTaskId
		Set objRS = objConn.Execute(sSQL)
		
		If Not objRS.EOF Then
			if objRS("customT2") <> sCustomT2 then 
    			sCustomT2 = sCustomT2 & ", " & objRs("customT2")   
  			end if	
		End If
		
		objRS.Close
		Set objRS = Nothing
		
		'Kontrollera CustomT3
		sSQL = "SELECT CustomT3 From tblTask Where Id = " & iNewTaskId
		Set objRS = objConn.Execute(sSQL)
		
		If Not objRS.EOF Then
			if objRS("customT3") <> sCustomT3 then 
    			sCustomT3 = sCustomT3 & ", " & objRs("customT3")   
  			end if	
		End If
		
		objRS.Close
		Set objRS = Nothing
		'------------------------------------------------------Slut block
		
		'-------------------------------------Block för Custom A1 till A3
		'Kontrollera CustomA1
		sSQL = "SELECT CustomA1 From tblTask Where Id = " & iNewTaskId
		Set objRS = objConn.Execute(sSQL)
		
		If Not objRS.EOF Then
			if objRS("customA1") <> sCustomA1 then 
    			sCustomA1 = sCustomA1 & ", " & objRs("customA1")  
  			end if	
		End If
		
		objRS.Close
		Set objRS = Nothing
		
		'Kontrollera CustomA2
		sSQL = "SELECT CustomA2 From tblTask Where Id = " & iNewTaskId
		Set objRS = objConn.Execute(sSQL)
		
		If Not objRS.EOF Then
			if objRS("customA2") <> sCustomA2 then 
    			sCustomA2 = sCustomA2 & ", " & objRs("customA2")   
  			end if	
		End If
		
		objRS.Close
		Set objRS = Nothing
		
		'Kontrollera CustomT3
		sSQL = "SELECT CustomA3 From tblTask Where Id = " & iNewTaskId
		Set objRS = objConn.Execute(sSQL)
		
		If Not objRS.EOF Then
			if objRS("customA3") <> sCustomA3 then 
    			sCustomA3 = sCustomT3 & ", " & objRs("customA3")   
  			end if	
		End If
		
		objRS.Close
		Set objRS = Nothing
		'------------------------------------------------------Slut block
		
		'Uppdatera det nya uppdraget	
		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
		
		'Radera uppdraget som sammanfogats
		sSQL = "DELETE * FROM tblTask WHERE Id = " & iTaskId
		objConn.execute(sSQL),,128
		
		'För över tiderna till det nya uppdraget
		sSQL = "UPDATE tblTime Set TaskId = " & iNewTaskId & " Where TaskId = " & iTaskId
		objConn.execute(sSQL),,128
		
		'För över materialet till det nya uppdraget
		sSQL = "UPDATE tblMaterial Set TaskId = " & iNewTaskId & " Where TaskId = " & iTaskId
		objConn.execute(sSQL),,128
		
	Next
	
	'Skapa kommaseparerad sträng med uppdragsnummer, samt ta bort det sista kommat.
	if len(sTaskJoined) > 2 then sTaskJoined = left(sTaskJoined, len(sTaskJoined)-2)
	
	'Skapa logmeddelande
	sInitials = Request.Cookies("sydostel")("userInitials")
	dLogDate = formatDateTime(Now(), 2) & " " & formatDateTime(Now(), 4)
	sLog = dLogDate & "	Sammanslaget från uppdrag: " & sTaskJoined & " i UppdragNu Intranät	/" & sInitials
	
	'Uppdtatera datumen i det nya uppdraget samt lägg till loggmeddelande
	sSQL = "UPDATE tblTask set Modified = Now(), CreatedDate = Now(), Log = Log & '" & vbCrLf & sLog & "' WHERE Id = " & iNewTaskId
	objConn.Execute sSQL,, 128
	
	'Skapa logmeddelande
	sLog = dLogDate & "	Uppdraget har Skapats i UppdragNu Intranät	/" & sInitials

	'Lägg till loggmeddelande
	sSQL = "UPDATE tblTask set Modified = Now(), Log = Log & '" & vbCrLf & sLog & "' WHERE Id = " & iNewTaskId
	objConn.Execute sSQL,, 128

	'Stäng databas
	objConn.Close
	Set objConn = Nothing
	
	Response.redirect "listTask.asp"
	
Else
	Response.redirect "notLoggedOn.asp"
End If

%>
</body>
</html>
Peter SMedlem sedan dec. 20025 483 inlägg
#12

Felpostat... :x

143 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)