webForumDet fria alternativet

Hjälp med att ta ut data från olika tabeller och lägga in datan i en tabell

.NET

13 svar · 541 visningar · startad av annasmurf

Medlem sedan mars 2006237 inlägg
Frågan#1

Hej!

Jag har ett problem och det är att jag hämtar data från flera tabeller och redovisar datan i olika droplister, sen vill jag att man väljer den data man vill ha och sedan ska den data in i en gemensam annan tabell. men jag får inte in data i den gemensam tabellen+ Är det någon som har förslag på hur jag ska göra? Använder MS SQL-databas

Medlem sedan jan. 20022 440 inlägg
#2

Jag förstår nog inte vad problemet är? Vet du hur man hämtar data från en MS Sql databas vet du säkert hur man lägger in datan också? Det låter som om du använder dig av en relationsdatabas och bara vill spara i en samlingstabell eller en tabell för att knyta ihop allting med när du inte skriver tydligare vad det är du försöker åstakomma eller bifogar någon kod kommer ingen kunna hjälpa dig.

Tänk gärna till lite mer innan du ställer en fråga här på webforum så får du lättare hjälp.

Medlem sedan mars 2006237 inlägg
#3

ok.

ja, jag vet hur man hämtar data, data kommer ut, men sen använder jag en stored procedur för att lägga in datan. ja jag använder en relationsdatabas. Den som laddar upp datat ser ut så här:

 private void Loadpåstigningsort(string selVal)
{
try
{
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter();
da = Functions.DAL.execAdapter("select p.Stad, p.påstigningsortId from påstigningsort p LEFT OUTER JOIN campaign cn on cn.paketpåstigningsId = p.paketid where cn.paketpåstigningsId=p.paketid and cn.campaignId='122436' order by Stad");
da.Fill(ds);
påstigningsort.DataSource = ds;
påstigningsort.DataBind();
if(selVal.Length > 0)
påstigningsort.Items.FindByValue(selVal).Selected = true;
else
påstigningsort.Items.FindByValue("0").Selected = true;
}	
catch {}
påstigningsort.Enabled = true;
}

private void submitImage_Click(object sender, system.Web.UI.ImageClickEventArgs e)
{
if (eventId > 0) 
{
String src = "order_intrest.aspx?eventId=" + Server.UrlEncode(eventId.ToString());
src += "&biljettval=" + Server.UrlEncode(biljettval.SelectedValue);
src += "&påstigningsort=" + Server.UrlEncode(påstigningsort.SelectedValue);
src += "&contactFirstname=" + Server.UrlEncode(contactFirstname.Text);
Response.Redirect(src);
 }
}
if (Request["påstigningsort"] != null) 
			{
				try 
				{
					påstigningsort.SelectedValue = Request["påstigningsort"].ToString();
				} 
				catch {}
			}

nästa sida man kommer till så ser det ut så här:

string _påstigningsort = Request["påstigningsort"].ToString();
påstigningsort.Text = _påstigningsort;

private void submitButton_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{			
String src_end = "order_endtest.aspx?eventId=" + Server.UrlEncode(eventId.ToString());
src_end += "&påstigningsort=" + Server.UrlEncode(påstigningsort.Text);
src_end += "&biljettval=" + Server.UrlEncode(biljettval.Text);	
src_end += "&contactFirstname=" + Server.UrlEncode(contactFirstname.Text);}
		
Response.Redirect(src_end);
}

if (Request["påstigningsort"] != null) 
{
try 
{
påstigningsort.Text = Request["påstigningsort"].ToString();
} 
catch {}
}

Nästa sida ser ut så här:

String _påstigningsort = Request["påstigningsort"].ToString();
påstigningsort.Text = _påstigningsort;

Person _person = new Person("", _contactEmail, _contactFirstname);
IntrestOrdertest IntrestOrdertest = new IntrestOrdertest(_person, _eventid, _numTravelers, _påstigningsort, _biljettval);
								
IntrestOrdertest _intrestOrdertest = IntrestOrdertest;
IntrestOrdertest.save();

if (Request["påstigningsort"] != null) 
{
try 
{
string påstigningsort = Request["påstigningsort"].ToString();
} 
catch {}
}

Nästa och sista sida ser ut så här

[Serializable()]
public class IntrestOrdertest
{
Person _person = null;
int _eventid = 0;
string _numTravelers = "";
string _påstigningsort = "";
		
public IntrestOrdertest() 
{
_person = null;
_eventid = 0;
_numTravelers = "";
_påstigningsort = "";
			
}
public IntrestOrdertest(int initOrderId)
{
// Get from db
if (initOrderId != 0) 
{
_orderId = initOrderId;
}
}
public IntrestOrdertest(Person initPerson, int initeventid, string initnumTravelers, string initpåstigningsort) 
{			_person = initPerson;
			_eventid = initeventid;
			_numTravelers = initnumTravelers;
			_påstigningsort = initpåstigningsort;
			}

public IntrestOrdertest(int initPersonId, int initeventid, string initnumTravelers, string initpåstigningsort) 
		{
						if (initPersonId != 0) 
			{
				_person = new Person(initPersonId);
				_eventid = initeventid;
				_numTravelers = initnumTravelers;
				_påstigningsort = initpåstigningsort;
							
			}
		}

public void save() 
{
// Save the order to the db
try 
{
_person.storePerson("Webb");
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter();
SqlCommand sqlCommand = Functions.DAL.execSPROCReader("addUpdateIntrestOrder1");
sqlCommand.CommandType = CommandType.StoredProcedure; 
SqlParameter param = new SqlParameter("@ID", SqlDbType.Int); 
param.Direction = ParameterDirection.Input;
param.Value = orderId;
sqlCommand.Parameters.Add(param);
param = new SqlParameter("@eventid", SqlDbType.Int); 
param.Direction = ParameterDirection.Input;
param.Value = _eventid;
sqlCommand.Parameters.Add(param);
param = new SqlParameter("@personId", SqlDbType.Int); 
param.Direction = ParameterDirection.Input;
param.Value = person.Id;
sqlCommand.Parameters.Add(param);
param = new SqlParameter("@Namn", SqlDbType.VarChar); 
param.Direction = ParameterDirection.Input;
param.Value = _person.firstName + " " + _person.lastName;
param = new SqlParameter("@Antal", SqlDbType.Int); 
param.Direction = ParameterDirection.Input;
param.Value = _numTravelers;
sqlCommand.Parameters.Add(param);
param = new SqlParameter("@påstigningsortId", SqlDbType.Int); 
param.Direction = ParameterDirection.Input;
param.Value = _påstigningsort;
sqlCommand.Parameters.Add(param);
aram.Direction = ParameterDirection.Input;
da = new SqlDataAdapter(sqlCommand); 
DataRow dataRow = null;
da.Fill(ds, "id");
ds.Dispose();
da.Dispose();
}

stored proceduren ser ut så här
CREATE procedure addUpdateIntrestOrder1
@ID int,
@eventId int,
@personId int,
@Namn nvarchar(100),
@Antal int,
@påstigningsortId nvarchar(100),
as
if @ID = 0
begin
insert into Bokning
( eventId,
personId,
createdBy,
updatedBy )
values
( @eventId,
@personId,
'webb',
'webb' )
select @ID = max(ID) from Bokning
end
update Bokning set
eventId = @eventId,
personId = @personId,
Namn = @Namn,
Antal = @Antal,
påstigningsortId = @påstigningsortId,
where id = @ID
select [id], uniqueId from bokning where id = @ID
GO

Mitt problem är att det fungerar om jag tar på påstigningsort-droplisten, så jag kan inte förstå var felet ligger i, är det någon som fattar vad jag menar och kan se eller förklara vad felet är????? Mycket tacksam för hjälp!!!!

Medlem sedan mars 2006237 inlägg
#4

jag har löst det nu, det ända som inte fungerar är att sortera i rätt ordning:
kod.aspxc ser ut så här

private void Loadbiljettval(string selVal)
{
try
{
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter();
				da = Functions.DAL.execAdapter("select b.BiljettvalId, b.BiljettPlats from biljettval b LEFT OUTER JOIN campaign cn on cn.paketpåstigningsId = b.testid LEFT OUTER JOIN event e on e.Id = cn.campaignId where cn.paketpåstigningsId=b.testid and e.Id = cn.campaignId order by b.biljettvalId"); 
da.Fill(ds);

biljettval.DataSource = ds;
biljettval.DataBind();
				
if(selVal.Length > 0)
biljettval.Items.FindByValue(selVal).Selected = true;
				else
biljettval.Items.FindByValue("0").Selected = true;
}	
catch {}
biljettval.Enabled = true;
}

kod.aspx ser ut så här:

<tr>
	<td vAlign="middle" width="240" height="20">Biljettval&nbsp;
	<asp:rangevalidator id="validatorBiljettval" runat="server" Display="Dynamic" ControlToValidate="biljettval"
	Type="Integer" MinimumValue="0" MaximumValue="999999"><img src="dimg/error.gif" border="0" alt="" /></asp:rangevalidator>
	</td>
	<td vAlign="middle" width="240" height="20">Påstingingsort&nbsp;
	<asp:rangevalidator id="validatorPåstigningort" runat="server" Display="Dynamic" ControlToValidate="påstigningsort"
	Type="Integer" MinimumValue="0" MaximumValue="999999"><img src="dimg/error.gif" border="0" alt="" /></asp:rangevalidator>
	</td>
</tr>

<tr>
	<td width="240">
	<asp:DropDownList Visible="true" id="biljettval" runat="server" AutoPostBack="True" Enabled="True" 
	DataTextField="BiljettPlats" DataValueField="BiljettPlats" Width="222px"></asp:DropDownList>
	</td>
	<td width="240">
	<asp:DropDownList Visible="true" id="påstigningsort" runat="server" AutoPostBack="True" Enabled="True" 
	DataTextField="Stad" DataValueField="Stad" Width="222px"></asp:DropDownList>
	</td>
</tr>

Är det någon som kan hjälpa mig, så vore jag mycket tacksam

Medlem sedan mars 2006237 inlägg
#5

jag vill alltså att den ska sortera efter id:t och inte efter biljettplatsen

Medlem sedan juli 200330 inlägg
#6

Ser inte varför den sorterar fel, men varför har du en LEFT OUTER JOIN?
Du kanske har en anledning till det men jag ser inte den.

SELECT b.BiljettvalId, b.BiljettPlats from biljettval b 
LEFT OUTER JOIN campaign cn on cn.paketpåstigningsId = b.testid 
LEFT OUTER JOIN event e on e.Id = cn.campaignId 
WHERE cn.paketpåstigningsId=b.testid 
AND e.Id = cn.campaignId
ORDER BY b.biljettvalId

Samma som

SELECT BiljettvalId, BiljettPlats from biljettval 
ORDER BY biljettvalId

Rätta mig om jag har fel

Medlem sedan mars 2006237 inlägg
#7

jo, jag måste ha det, för att det är olika biljettval som ska visas beroende på vilket camaign som man har valt

Medlem sedan juli 200330 inlägg
#8

Okej, men vore det inte bättre med en INNER JOIN då?

Ta en titt här så ser du vad jag menar http://www.w3schools.com/sql/sql_join.asp

Medlem sedan mars 2006237 inlägg
#9

Hej!

Det hjälpte inte ändå, det är samma problem det sorterar efter biljettplatsen och inte id:t, har du något annat förslag??

Medlem sedan juli 200330 inlägg
#10

har du testat med att sätta ORDER BY b.biljettvalId DESC respektive ASC och gör samma sak fast med ORDER BY b.BiljettPlats DESC respektive ASC.

Får du fortfarande samma ordning då?

Medlem sedan mars 2006237 inlägg
#11

vad menar du med DESC och ASC?

Medlem sedan mars 2006237 inlägg
#12

jaha nu vet jag vad du menar. jag ska testa det!

Medlem sedan mars 2006237 inlägg
#13

jag fattar inget, gör jag samma fråga i sql query så fungerar det så som jag hade det från början, men inte i själva programmet...jag blir knäpp!!!!!!!!!!

Medlem sedan mars 2006237 inlägg
#14

Nu fungerar det! det var jag som hade gjort en tabbe vi kompileringen

260 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)