webForumDet fria alternativet

SELECT utan att veta vad kolumnerna heter

14 svar · 486 visningar · startad av Nöff

NöffMedlem sedan nov. 2003569 inlägg
#1

hej finns det nåt sätt att returnera data från en tabell utan att veta vad kolumnerna heter, jo jag vet man kan använda * , men då får man med allt, jag vill tex bara ha med de 3 första.

@ndersMedlem sedan juni 200032 969 inlägg
#2

Om du inte vet vad fälten heter, hur ska du då kunna veta att du vill ha information från de tre första?

NöffMedlem sedan nov. 2003569 inlägg
#3

Eftersom de bestäms av hur många kolumner det är.

Tänk dig ett scenario där du ska lägga in ett access tabell i en SQL server, göra modifikationer , och sedan kunna få ut access tabellen där kolumnerna är identiska från det ursprungliga access tabellen igen.

@ndersMedlem sedan juni 200032 969 inlägg
#4

Om det nu bara är tre kolumner i Excel-arket, borde det då inte vara tre kolumner i tabellen i databasen? Eller läses arkets alla kolumner in i tabellen, fast de inte har någon data?

NöffMedlem sedan nov. 2003569 inlägg
#5

hehe. jag har ett scenario där vilka typer av access tabeller som helst ska kunna läsas in i SQL-servern, således vet jag inte från början hur många kolumner som ska läsas in, därför tänkte jag att jag skapar en tabell i SQL-servern som innehåller 20 kolumner för att vara på den säkra sidan, och sen lägger in, och sedan kollar hur många kolumner som existerar i access tabellen och sen gör en select i SQL-servern typ såhär : SELECT (antalkolumner) FROM tabell

clarkbonesMedlem sedan feb. 20013 023 inlägg
#6

Borde bli problem med att få rätt datatyper i SQL Server? Och hur vet du att 20 eller 40 kolumner räcker till? 40 är förstås osannolikt men inte alls omöjligt.

Bättre är kanske att lära sig objektmodellen för DTS och sköta allt via programmering.

NöffMedlem sedan nov. 2003569 inlägg
#7

Borde bli problem med att få rätt datatyper i SQL Server? Och hur vet du att 20 eller 40 kolumner räcker till? 40 är förstås osannolikt men inte alls omöjligt.

Datatyperna är inte så viktiga i detta fallet, och visst kan jag sätta 40 kolumner i SQL-servern istället.

Bättre är kanske att lära sig objektmodellen för DTS och sköta allt via programmering.

Hur menar du då?

clarkbonesMedlem sedan feb. 20013 023 inlägg
#8

Bättre är kanske att lära sig objektmodellen för DTS och sköta allt via programmering.

Hur menar du då?

För att exempelvis importera en tabell från Access till SQL Server så använder du ju Data Transformation Services Wizard.

Om du nu vill leka i den högre skolan så kan du göra detta via automatik. Testa att importera en tabell till SQL Server m h a DTS Wizard och välj att spara som VBS-fil. Koden kan du utgå ifrån om du vill bygga din egen dataimportör. Jag kan tänka mig att det tar en del tid dock.

NöffMedlem sedan nov. 2003569 inlägg
#9

Verkar som det blir för mycket jobb för så lite.
För att allting hade ju varit löst om man kunde SELECT:a antal kolumner man vill ha istället för att tvingas namnge kolumnerna.

Kan man inte göra något såhär:SELECT 1,2,3,4 FROM tabell... eller nåt?

@ndersMedlem sedan juni 200032 969 inlägg
#10

Det närmaste jag kan komma på är:

* Ställ en SQL-fråga för att ta reda på vilka de x första kolumnerna är
* Loopa ihop resultatet till en stränglista av kolumnnamn
* Ställ en selectfråga där stränglistan specificerar vilka fält du vill ha.

mvh

NöffMedlem sedan nov. 2003569 inlägg
#11

Hmm. men SQL-server tabellen ska kunna ha flera olika access tabeller i sig. Och om det inte finns någon info på kolumnindex 6 på första raden men det gör det på de andra raderna blir det ju lite fel.

Men det är ju väldigt märkligt att man inte kan select:a med kolumnindex istället för namn.

@ndersMedlem sedan juni 200032 969 inlägg
#12

Men, du måste väl veta vilken excel-data du vill ha ut, och därmed hur många kolumner du vill ha? Att kolumn 6 är tom för en viss excel-tabell är ganska ointressant. Jag tror att mitt förslag ovan är det bästa jag kan komma med, för mig veterligen finns inget sätt att ange ordningsnummer istället för fältnamn i SELECT-frågan.

NöffMedlem sedan nov. 2003569 inlägg
#13

...

NöffMedlem sedan nov. 2003569 inlägg
#14

Att kolumn 6 är tom för en viss excel-tabell

nej raden inte tabellen.

OK, du menar att jag ska SELECTA alla kolumner i accessen och sen göra en array av dessa kolumnnamn för att sen göra en SELECT med hjälp av denna array. Men SQL-server tabellen finns ju redan innan jag lägger in access tabellen i den. Det går ju inte att namnge SQL-server kolumnerna då.. Eller hur menar du?

@ndersMedlem sedan juni 200032 969 inlägg
#15

Jag menar att du ska hämta de första x kolumnnamnen och lägga dem till en sträng för att använda vid din SELECT av datat. Om du vet hur många kolumner du vill ha vill säga, vilket ju var själva grunden för frågan?

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