Just nu i M3-nätverket
Jump to content

Relationer eller spara i två tabeller och import Excel


Bergh_1976

Recommended Posts

Jag har ett problem som jag inte kan fixa. Jag har 7st tabeller som vardera innehåller 17 kolumner. Nu vill jag ha all information från de 7 tabellerna till en stor tabell som jag kan söka i.

I de 7 tabellerna kan jag lägga till och ta bort poster, men det vill jag inte i den stora tabellen, men i den stra vill jag kunna ändra data i posterna så att det ändra i någon av de sju andra. Eller ska man helt enkelt göra någon kod som gör att det du spara i en av de 7 tabellerna änev automatiska sparar i en annan tabell?

 

Jag skulle även vilja skapa en knapp som gör så att jag kan importera data från ett excelblad till en speciel tabell, T.ex ett Excelblad där det står nya adresser till en artikel, den skall både uppdatera befintliga poster med ny data och även lägga till ny artiklar.

 

Tack för svar!!

/Berg

Link to comment
Share on other sites

Cege Anderson

Hej hej

 

Skall försöka ge ett svar på dina frågor.

 

Till att börja med: Varje databas är unik och den lösning man väljer bestäms ju av det behov man har. Uppfatta därför inte det jag skriver som kritik ... dessutom så är mina åsikter nedan IMHO ingen objektiv sanning

 

Nåväl: IMHO känns det inte som att du har designat databasen på ett alldeles optimalt sätt. Varför lagrar du inte alla data i en och samma tabell? Om alla innehåller samma 17 kolumner och du vill visa dessa i en tabell?

 

Om vi ändå förutsätter att du måste ha dessa 7 tabeller så kan du skapa en Unionsfråga för att visa resultaten från alla tabeller i en fråga. Om vi då skall vara lite "formella" så lagras alltså denna data, som visar resultat från samtliga tabeller, inte i en ny tabell. I denna fråga kan du söka efter data, har dock inte riktigt koll på om du bara kan visa data och/eller om du även kan ändra data.

 

Jag skulle dessutom vilja tillägga att de olika fälten i alla tabellerna måste vara av samma datatyp, alltså fältet "inköpsdatum" i en tabell måste vara av samma datatyp som fältet "inköpsdatum" i övriga tabeller etc etc

 

Se hur du skapar en unionsfråga http://office.microsoft.com/sv-se/access/HA102061091053.aspx

 

Det finns även något som heter CREATE TABLE i SQL men jag tror inte riktigt att det är det du är ute efter.

 

När det gäller import från Excel så är den ena saken, att importera in data via en knapp ganska enkelt. Du skapar ett makro (eller VBA-kod) som anger vad du skall importera, från vilken fil och hur många rader, och sedan skapar du en knapp som du kopplar makrot/koden till. Inte så knepigt. Jag kan hjälpa dig vidare med detta.

 

När det gäller att informationen skall uppdateras från Excel-filen är jag inte rätt man att svara på detta. Jag har haft behovet själv men inte hittat någon lösning utan jag skulle nog säga att det inte går MEN detta är verkligen inte underbyggt. Någon annan kanske vet en lösning på detta problem. Måste ju vara ganska användbart för stora databaser med adresser etc.

 

Testa ovanstående och återkom

 

// Cege

Link to comment
Share on other sites

  • 3 months later...
Bergh_1976

Hej Cege!!

 

Hoppas att du har haft det bra sedan vi sist hördes vid.

Nu har jag givetvis flera frågor till dig som jag är säker på att du kan lös åt mig.

Det första är, (om du kommer ihåg) den stora kompletta listan så funkar att som det ska utom när jag ska skriva ut för då får flera utskrifter än vad jag vill ha. Om jag har ett artikelnummer och ska sriva ut det så får jag med 3-5 andra artikelnummer. Jag har testat att gör en likadan knapp som jag har er de olika formulären för där funkar det, men inte här. Det finns även önskemål om att kunna få fram underlag på hur stor ökningen blir om volymerna går upp med kanske 20% och lite annat. Jag har inte alla dokument till detta än men det får jag nästa vecka.

 

M.V.H Berg

Link to comment
Share on other sites

Bergh_1976

Sedan var det detta med att importera Excel till Access genom att klicka på en knapp. Jag tror jag har hittat något intressant.

 

Här är ett VBA-rutin som jag skrev som du kan prova från en Standard

Access Code module (as opposed to a Form code module). Access Code modul (i motsats till ett formulär kod modul). This procedure Detta förfarande

programmatically connects an Excel sheet to Access. programmatiskt ansluter ett Excel-blad till Access. Then it pulls data Då drar data

from the connection table into a permanent table in Access. från anslutningen tabellen till en permanent tabell i Access.

 

Sub GetDataFromExcel() Sub GetDataFromExcel ()

 

Dim dbsTemp As Database Dim dbsTemp som databas

Dim tdfLinked As TableDef Dim tdfLinked Som TableDef

 

Set dbsTemp = CurrentDb Set dbsTemp = CurrentDb

Set tdfLinked = dbsTemp.CreateTableDef("tblSheet1") Set tdfLinked = dbsTemp.CreateTableDef ("tblSheet1")

 

tdfLinked.Connect = _ tdfLinked.Connect = _

"Excel 5.0;HDR=YES;IMEX=2;DATABASE=C:\Dir1\Book1.xls" "Excel 5,0, HDR = JA, IMEX = 2; DATABASE = C: \ kat1 \ Book1.xls"

 

tdfLinked.SourceTableName = "Sheet1$" tdfLinked.SourceTableName = "Blad1 $"

dbsTemp.TableDefs.Append tdfLinked dbsTemp.TableDefs.Append tdfLinked

DoCmd.RunSql "Select * Into tbl1 From tblSheet1" DoCmd.RunSql "Välj * Into TBL1 Från tblSheet1"

 

End Sub End Sub

 

Here is an explanation of what is going on. Här är en förklaring till vad som pågår. First, you create a Först skapar du en

tableDef object to receive the Excel table you are going to connect to. TableDef syfte att få Excel-tabellen du ska ansluta till.

In this example I call the object tdfLinked. I detta exempel jag kallar föremålet tdfLinked. Note the connection Notera anslutningen

string. strängen. The only part of the connection string that you can modify is Den enda del av anslutningssträngen som du kan ändra är

the location of the Excel workbook you are going to connect. platsen för Excel-arbetsboken du ska ansluta. Here I Här har jag

connect to DATABASE=C:\Dir1\Book1.xls. ansluta till databasen = C: \ kat1 \ Book1.xls. But you can write whatever path Men du kan skriva vad sökvägen

you need. du behöver. Leave the rest of the connection string as is. Låt resten av anslutningssträngen som den är. Next, in my Nästa, enligt min

example, I am connecting to Sheet1. exempel är jag ansluter till Blad1. Use whatever the sheet name is. Använda de bladet heter.

Note also that you have to follow the sheet name with a $ sign or it Observera också att du måste följa blad namnet med ett $ tecken eller det

won't work. fungerar inte. Then, of course, you append the tableDef object to the Sedan, naturligtvis, lägg dig TableDef invända mot

database.TableDefs collection. database.TableDefs samling. Now you run a sql query to import the Nu kan du köra en SQL-fråga för att importera

data into a new table. data till en ny tabell. Assuming tbl1 does not already exit you run this Förutsatt TBL1 inte redan exit du kör

query from the VBA routine förfrågan från VBA rutin

 

DoCmd.RunSql "Select * Into tbl1 From tblSheet1" DoCmd.RunSql "Välj * Into TBL1 Från tblSheet1"

 

And you have now imported your Excelsheet to Access. Och du har nu importerat din Excelsheet till Access.

 

O.B.S denna är översatt från Engelska med hjälp av Google så det blir lite skoj att läsa. Men som vanligt så är jag sämst och får det inte att funka.

 

//Berg

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...