Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Neueste Beiträge

#1
Tabelle/Abfrage / Re: SQL Abfrage Filtern
Letzter Beitrag von knobbi38 - Heute um 15:29:01
Zitat... wenn ich die leeren einfach rausfilter bekomme ich die Datensätze mit der gleichen Person die ein Änderungsdatum haben trotzdem angezeigt.
...
Ich dachte, ich hätte es oben verständlich dargestellt.
Woher soll ein Außenstehender wissen, mit welchem SQL-Statement du da etwas rausfilters? Verständlich ist etwas anderes und so können Helfende nur Vermutungen anstellen.

#2
Access Programmierung / Re: Datenaktualisierung scheit...
Letzter Beitrag von knobbi38 - Heute um 15:24:29
Hallo Babsi,

noch ein Nachtrag:
In deinen Beispielen wird ein OLEDB-Treiber verwendet und kein ODBC, wie du mehrfach fälschlicherweise angenommen hast.

Nur mal so am Rande ...

Gruß Knobbi38
#3
Tabelle/Abfrage / Re: SQL Abfrage Filtern
Letzter Beitrag von Bernd Sowa - Heute um 15:14:45
Hallo Eckehard,
danke für die Antwort. Werde ich so schnell wie möglich testen.

Es ist übrigens ein richtiges Datumsfeld.
Ich habe nur für das Beispiel Jahreszahlen verwendet.

Ich wünsche ein schönes Wochenende...
#4
Access Programmierung / Re: Datenaktualisierung scheit...
Letzter Beitrag von Mokkie - Heute um 15:10:50
Hallo Christian,

Zitatsorry, war aus dem Kopf, so sollte es gehen:
Ich bitte Dich...

Es funktioniert, genau wie der das von markusxy. Allerdings hat er was zum Command geschrieben.

Egal wie ich es mache, ich laufe dauernd auf den selben Fehler.
Abfragetiemout


Ich habe die Tabelle schon untersucht, jetzt werde ich mich doch wohl Serverseitig auf die Suche machen müssen.
 ::)
Ich habe hier schon ein Constraint gelöscht, das auf dem Feld Memo lag, da konnte ich selbst auf dem Server das Feld nicht aktualisieren.

Habt vielen Danke für eure Bemühungen, und Erläuterungen.

Ich melde mich wieder und hoffe dass ich den Fehler finde.
#5
Access Programmierung / Re: Datenaktualisierung scheit...
Letzter Beitrag von Bitsqueezer - Heute um 14:50:29
Hallo Babsi,

sorry, war aus dem Kopf, so sollte es gehen:
    Set conn = New ADODB.Connection
    conn.Open "Provider=MSOLEDBSQL;Server=AFC-MSSQL2016V;Database=FENG;Trusted_Connection=yes;"

    Set cmd = New ADODB.Command
    Set cmd.ActiveConnection = conn
    cmd.CommandType = adCmdText
    cmd.CommandText = "UPDATE data.COMPANY SET COMPANY_MEMO = '" & sMemo & "' WHERE COMPANY_ID = " & lActId
    cmd.Execute
   
    conn.Close
    Set cmd = Nothing
    Set conn = Nothing
@markusxy : Die Variante mit "conn.Execute" kannte ich allerdings auch noch nicht. Unter einem Connection-Object nach Execute zu suchen, kam mir nie in den Sinn.. :)

Die cmd-Variante hat den Vorteil, daß man sie gezielter auch bei SQL Server einsetzen kann, wenn es darum geht, z.B. eine Stored Procedure auszuführen, je nach CommandType. Aber für Dynamic SQL ist das conn.Execute auch sicher eine Variante (nie probiert, keine Ahnung, welche Vor- oder Nachteile es hat).

Generell gilt: Diese Vorgehensweise bei Verwendung von "Execute" mit Dynamic SQL hat in jedem Fall den Nachteil, daß es für SQL Injection anfällig ist, da man im Gegensatz zu Access SQL bei T-SQL auch Befehele mit ";" trennen kann und damit gerade bei Änderung von Textfeldern sehr leicht das Textfeld mit "'" schließen und "böse" Befehle einfügen kann. Darüber hinaus kann ein "'" im Text ganz simpel auch zu Fehlern führen.

Wenn eine verlinkte Tabelle vorhanden ist, die man mit Access bearbeiten kann, sollte eine DAO-Query (also eine UPDATE-Query!) mit "PARAMETERS" ebenso funktionieren, dann kann man eine QueryDef erstellen, Parameters-Collection sicher befüllen (auch wenn ein "'" im Text enthalten ist) und ausführen.
ADO wird zur Ausführung dann nicht gebraucht.

Alternativ erstellt man eine Stored Procedure auf dem SQL Server, die man per cmd-Objekt sicher mit Parametern befüllen kann und die dann ausgeführt werden, dabei auch gesichert werden kann durch Ausführungsrechte für Stored Procedures.

Gruß

Christian
#6
Access Programmierung / Re: Datenaktualisierung scheit...
Letzter Beitrag von markusxy - Heute um 14:46:47
Zitat von: Mokkie am Heute um 14:38:48Und alles per C&P, auch richtig.


Das war auf das Beispiel von Christian bezogen, weil ein Command so einzusetzen ist eher dilletantisch.
Man verwendet es um bei Abfragen oder Prozeduren Parameter als Objekte zu übergeben und nicht per sql zusammenzusetzen.
Hat in erster Linie den Vorteil, dass das Objekt für die richtige Formatierung sorgt.
#7
Access Programmierung / Re: Datenaktualisierung scheit...
Letzter Beitrag von Mokkie - Heute um 14:38:48
Hallo markusxy,

ja, das ist zusammengestoppelt. Und alles per C&P, auch richtig.
Und ich muss mir das bestimmt noch gnauer ansehen.
Im moment will ich das einfach nur hinbekomme, das
Zitatconn.Execute
läuft nun. Also, es wird aber auch hier der selben Fehler geschmiessen, Abfragetimeout. Wenn dasnn etwas im Dbeugmodus gewartet wird,, ich auf F5 gehe , dann klappt es. Es hat wohl wirklich was mit der Tabelle auf dem server zu tun.

Ich danke euch! Ich werde mir das am Wochenende mal durchlesen.Habe irgendwo noch ein Buch...Hoffe darin etwas zu finden

@christian
ZitatBTW: "[Hotline -> Terminallist]" ist ein sehr schlechter Name für Objekte. In Objektnamen sollte man Leerzeichen, Sonderzeichen und Umlaute grundsätzlich vermeiden. Ein guter Name wäre z.B. "frmHotline_Terminallist".
Das gilt nicht nur für Formularnamen, sondern ALLE Namen. Nicht zu verwechseln mit Beschriftungen in Labeln etc.

Das ist alles so migriert worden, ich hätte niemals solche Namen verwendet, alles sehr alt.


#8
Access Programmierung / Re: Datenaktualisierung scheit...
Letzter Beitrag von markusxy - Heute um 14:24:27
Schaut alles nach viel Copy&Paste aus.
Command vielleicht vor der Nutzung mal ordentlich ansehen, wenn man aber eh Text per VBA zusammenstoppelt braucht man es nicht.

Set conn = New ADODB.Connection
conn.Open "Provider=MSOLEDBSQL;Server=AFC-MSSQL2016V;Database=FENG;Trusted_Connection=yes;"
conn.Execute "UPDATE data.COMPANY SET COMPANY_MEMO = '" & sMemo & "' WHERE COMPANY_ID = " & lActId
#9
Access Programmierung / Re: Datenaktualisierung scheit...
Letzter Beitrag von Mokkie - Heute um 14:18:53
Hallo Beaker,

nein bestimmt nicht, ich muss erst mal raffen was das ist.

Hallo Christian,

immer noch einen Fehler
ZitatComandtest was not set for Command object
:'(
#10
Access Programmierung / Re: Datenaktualisierung scheit...
Letzter Beitrag von Bitsqueezer - Heute um 14:02:57
Hallo Babsi,

Auch hier verwendest Du wieder "CreateObject. Und rs, obwohl nicht mehr gebraucht.

Beispiel:
Dim conn As ADODB.Connection
Dim cmd  As ADODB.Command
Dim lActId As Long
Dim strsql As String, sMemo As String

If CurrentProject.AllForms("[Hotline -> Terminallist]").IsLoaded Then
    lActId = Nz(Forms![Hotline -> Terminallist]!COMPANY_ID, 0)
 
sMemo = Nz(Me.COMPANY_MEMO)
 
' Verbindung und Recordset wiederherstellen
Set conn = New ADODB.Connection
conn.Open "Provider=MSOLEDBSQL;Server=AFC-MSSQL2016V;Database=FENG;Trusted_Connection=yes;"

Set cmd = New ADODB.Command
Set cmd.ActiveConnection = conn
cmd.Execute "UPDATE data.COMPANY SET COMPANY_MEMO = '" & sMemo & "' WHERE COMPANY_ID = " & lActId

conn.Close
Set cmd = Nothing
Set conn = Nothing

Sollte so funktionieren.

Gruß

Christian