Avatar billede larsgrau Forsker
28. december 2010 - 22:17 Der er 9 kommentarer og
1 løsning

Save tekst boks data til tabel

Hej

Jeg vil gerne kunne save noget data som er i en tekst boks til en tabel, med kun et felt som er et notat felt

jeg har en tekst boks som hedder tekst4 som jeg gerne vil have ned i tabellen, som hedder sendt, med feltnavn sendtdata. når jeg  trykker på en knap

og jeg vil også gerne save det til en fil, hvor den kommer og spørg hvor den skal gemmme henne.

og sidst men ikke mindst udskrive teksten i tekstboks til printer.
Avatar billede martiinkolle Nybegynder
28. december 2010 - 23:24 #1
Det lyder som om at du allerede har en kode. Vil du ikke lige poste den :-)
Avatar billede larsgrau Forsker
29. december 2010 - 12:22 #2
DoCmd.SetWarnings False                                'sætter advarelser til off
DoCmd.OpenQuery "tøm_signalprio", acViewNormal, acAdd
DoCmd.OpenQuery "tilføj_signalprio", acViewNormal, acAdd
Me.Tekst28 = Forms!signalhovede!Tekst15
Me.Liste0 = fhpHentFra()
Me.Tekst2 = fhpHentto()
Me.Tekst6 = fhphentinfo()
Me.Tekst34 = fhpHentsignal()
Me.klassifikation = fhpHentklassifikation()
If Nz(Tekst6.Value, "") <> "" Then
    Tekst12.Value = "INFO "
Else
    Tekst12.Value = ""
End If
Me.Tekst21 = fhphentprio()

If Nz(Tekst28.Value, "") <> "" Then
    ZPW.Value = " ZPW "
Else
    Tekst12.Value = ""
End If

'her under henter den SIC kode fra signalhovede
Me.SIC1 = Forms!signalhovede!Tekst85 'SICkode 1
Me.SIC2 = Forms!signalhovede!Tekst95 'SICkode 2
Me.SIC3 = Forms!signalhovede!Tekst4  'SICkode 3
Me.SIC4 = Forms!signalhovede!Tekst9  'SICkode 4

If Nz(SIC1.Value, "") <> "" Then 'Her sætter man SICkode 1 og et tegn sammen, felt = /
    SSIC1.Value = SIC1 & felt
Else
    SSIC1.Value = ""
End If

If Nz(SIC2.Value, "") <> "" Then 'Her sætter man SICkode 2 og et tegn sammen, felt = /
    SSIC2.Value = SIC2 & felt
Else
    SSIC2.Value = ""
End If

If Nz(SIC3.Value, "") <> "" Then 'Her sætter man SICkode 3 og et tegn sammen, felt = /
    SSIC3.Value = SIC3 & felt
Else
    SSIC3.Value = ""
End If

If Nz(SIC4.Value, "") <> "" Then 'Her sætter man SICkode 4 og et tegn sammen, felt = /
    SSIC4.Value = SIC4 & felt
Else
    SSIC4.Value = ""
End If


Me.samletSIC = Forms!formular1!SSIC1 & Forms!formular1!SSIC2 & Forms!formular1!SSIC3 & Forms!formular1!SSIC4 & Forms!formular1!felt ' her samler man alle de SIC koder der er
Me.Tekst32 = Forms!formular1!ZPW & Forms!formular1!Tekst28
Me.datotid = Replace(Forms!formular1!Tekst21 & Forms!formular1!Tekst23 & Forms!signalhovede!datotid, vbCrLf, "")
Me.Tekst14 = Forms!formular1!Tekst12 & Forms!formular1!Tekst6
Me.Tekst4 = UCase(Forms!formular1!datotid & Forms!formular1!Tekst32 & vbCrLf & Forms!formular1!Tekst8 & Forms!formular1!Liste0 & Forms!formular1!Tekst10 & Forms!formular1!Tekst2 & Forms!formular1!Tekst14 & Forms!formular1!BT & vbCrLf & Forms!formular1!klassifikation & Forms!formular1!samletSIC & vbCrLf & Forms!formular1!Tekst34 & Forms!formular1!BT)


Det er det data som står i tekst4 som skal gemmes, udskrives og gemmes i en tabel
Avatar billede Slettet bruger
29. december 2010 - 18:01 #3
Det er et af de tilfælde hvor jeg tænker: Hvor det? - det er der jo i forvejen i datakilden til formular1 - lav en forespørgsel der svarer til tildelingen i me.Tekst4=

Nuvel - det er naturligvis muligt (det hedder indsætte ikke save).
sql syntaksen for indsætning af et enkelt tekst felt navngivet 'felt' i tabellen 'tabel' er

sql="insert  into tabel(felt) values('" & Forms!formular1!Tekst4 & "')

Prøv først at lave det som forespørgsel med en testværdi, så du for styr på hvad netop din tabel skal have af evt. andre felter

Koden der udføres ved knappens vedClick event er:
sql=....
currentdb.execute sql

Søgende på nettet efter hvordan man gemmer indholdet i en fil, vil du uundgåeligt, her 10år efter at alle windows maskiner er udstyret med WSH, støde på vba's antikverede open "filename" bla.bla. - følgende er vbscript måden:

With CreateObject("Scripting.FileSystemObject").createTextFile("c:\testvbs.txt")
    .Write Forms!formular1!Tekst4
End With

Så er det filnavnet - http://www.mvps.org/access/api/api0001.htm

Udskrive? find en app der kan: lur en brugbar i HKEY_CLASSES_ROOT\whatever\shell\print - jeg har f.eks
%SystemRoot%\System32\NOTEPAD.EXE /p %1

Kan sikkert kaldes fra shell i vba
Avatar billede larsgrau Forsker
29. december 2010 - 23:18 #4
hej igen

det virker næsten det hele. jeg har fået den til at gemme teksten i en tabel og jeg har fået den til at åbne en dialog boks, til at gemme i, jeg har bruget det link du sendte til mig.

Men jeg ved ikke helt hvordan jeg skal få den til at tage det data som er i tekstboks4 med ned i filen. hvis jeg bruger denne virker det:
With CreateObject("Scripting.FileSystemObject").createTextFile("c:\signal.txt")
    .Write Forms!formular1!Tekst4
End With

Men der kan jeg jo ikke selv bestemme hvad filen skal hedde, der har jeg som har lavet databasen bestemt det.

Hvis jeg bruger denne:
Dim stDocname As String
Dim strFilter As String
Dim strSaveFileName As String

strFilter = ahtAddFilterItem(strFilter, "Tekstfil (*.txt)", "*.txt")
strSaveFileName = ahtCommonFileOpenSave( _
                                    OpenFile:=False, _
                                    Filter:=strFilter, _
                    Flags:=ahtOFN_OVERWRITEPROMPT Or ahtOFN_READONLY)
                   
kommer den godt nok op med dialogboksen, og den kommer heller ikke med fejl når jeg trykker på gem, men den skriver ikke filen.
hvad mangler jeg ??
Avatar billede Slettet bruger
30. december 2010 - 10:43 #5
...
if len(strSaveFileName) then 'ikke valgt 'cancel' i gemsom dialog'
With  CreateObject("Scripting.FileSystemObject").createTextFile(strSaveFileName)
    .Write Forms!formular1!Tekst4
End With:endif
Avatar billede larsgrau Forsker
30. december 2010 - 11:58 #6
Takker for hjælpen, jeg har lige et extra spørgsmål.

jeg har et sted hvor jeg importer sådan her:

Dim stDocname As String

DoCmd.SetWarnings False

DoCmd.OpenQuery "tøm_signal", acViewNormal, acAdd

stDocname = GetOpenFile("", "Vælg en Log Fil")

Name stDocname As "c:\import.txt"

DoCmd.TransferText acImportDelim, "signalimport", "signal", "c:\import.txt", False, ""

import_file_exit:

Kill "c:\import.txt"

Me.Tekst17 = fhpHentsignal

Exit Sub


Resume import_file_exit
Err_import_file:
If Err.Number = 53 Then
Exit Sub
Else
MsgBox Err.Number & " - " & Err.Description

Resume import_file_exit
End If

End Sub

Jeg bruger det samme fil modul, men jeg er lidt træt af at jeg ikke kan få den til at hente filen uden at jeg skal rename den og bagefter kill den.

jeg har prøvet denne måde men jeg syntes ikke det virker.

Dim strFilter As String
Dim strInputFileName as string

strFilter = ahtAddFilterItem(strFilter, "Excel Files (*.XLS)", "*.XLS")
strInputFileName = ahtCommonFileOpenSave( _
                Filter:=strFilter, OpenFile:=True, _
                DialogTitle:="Please select an input file...", _
                Flags:=ahtOFN_HIDEREADONLY)

DoCmd.TransferText acImportDelim, "signalimport", "signal", strInputFileName, False, ""

Kan du sige hvad der går galt.

husk at skrive det som svar så jeg kan give dig dine point :-)
Avatar billede Slettet bruger
30. december 2010 - 19:56 #7
Jeg kan ikke se nogen fejl, men bemærker at DoCmd.TransferText acImportDelim,... i første tilfælder er fra en Text fil og i sidste fra en regnearksfil fil
HVordan ved DoCmd.TransferText acImportDelim,... fra hvilke ark i .xls filen?
Der findes også en DoCmd.TransferSpreadsheet.
Avatar billede larsgrau Forsker
30. december 2010 - 22:06 #8
Du har ret, men det er ikke den jeg kopiende den fra siden ind og ikke den jeg brugte. her er min:

Private Sub Kommandoknap0_Click()
DoCmd.SetWarnings False

Dim strFilter As String
Dim strInputFileName As String

DoCmd.OpenQuery "tøm_signal", acViewNormal, acAdd

strFilter = ahtAddFilterItem(strFilter, "IRIS FORMS (*.IRS)", "*.IRS")
strInputFileName = ahtCommonFileOpenSave( _
                Filter:=strFilter, OpenFile:=True, _
                DialogTitle:="Please select an input file...", _
                Flags:=ahtOFN_HIDEREADONLY)

Name strInputFileName As "c:\import.txt"

DoCmd.TransferText acImportDelim, "signalimport", "signal", "c:\import.txt", False, ""

Kill "c:\import.txt"

End Sub

Denne virker faktisk, men jeg mister original filen, da den fil jeg skal importer er en IRS fil, men den kan godt læses i notebook. og transfertext kan kun  tage txt filer ind.

Så hvis man kan kopier strInputFileName til en andet det og der efter rename den til txt vil det virke.

Jeg har prøvet denne:
FileCopy strInputFileName, "c:\"
og denne her har jeg også prøvet
FileCopy strInputFileName, "c:\*.*"

Nogen ider ??
Avatar billede larsgrau Forsker
30. december 2010 - 22:18 #9
HA HA

Har fundet ud af det nu.

man skal da bare bruge denne:

On Error GoTo Err_import_file

DoCmd.SetWarnings False

Dim strFilter As String
Dim strInputFileName As String

DoCmd.OpenQuery "tøm_signal", acViewNormal, acAdd

strFilter = ahtAddFilterItem(strFilter, "IRIS FORMS (*.IRS)", "*.IRS")
strInputFileName = ahtCommonFileOpenSave( _
                Filter:=strFilter, OpenFile:=True, _
                DialogTitle:="Please select an input file...", _
                Flags:=ahtOFN_HIDEREADONLY)

FileCopy strInputFileName, "c:\import.txt"

DoCmd.TransferText acImportDelim, "signalimport", "signal", "c:\import.txt", False, ""

Kill "c:\import.txt"

Me.Tekst17 = fhpHentsignal

Exit Sub


Err_import_file:
If Err.Number = 53 Then
Exit Sub
Else
MsgBox Err.Number & " - " & Err.Description

End If

Den virker og man beholder originalen filen der hvor den lå før.
Avatar billede larsgrau Forsker
30. december 2010 - 22:19 #10
Takker mange gange for hjælpen:-)

Godtnytår
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester